The named entities we have recognised in the Henslow data would be much more useful if they could be linked to other data known about those entities. This principle is called linked data. Linked data can enrich the discovery of collections and allow sophisticated searches for the knowledge within those collections.
If the data is freely available and openly licensed it is known as linked open data (LOD). The diagram below shows the extent of LOD in 2010. Since then then the linked open data cloud has grown immensely and you can explore it for yourself at www.lod-cloud.net.

Linked data is a very big topic, so this notebook will only touch on a few introductory aspects that relate to the NER we have done in this course. In particular, we will focus on the automated ways of linking data that can be enabled by writing code, though the underlying principles can be understood without it.
One of the challenges with named entities is that there may be many different forms, spellings or abbreviations that refer to the same person, place, country, and so on.
An authority file is a way of normalising and unifying this information for each entity into a single, authoritative authority record and giving it a unique identifier. Typically, all the known forms of a particular entity will be recorded in its authority record so that every form can be resolved to the same, correct entity.
You may already be familiar with VIAF: The Virtual International Authority File, which is an authority service that unifies multiple authority files for people, geographic places, works of art, and more.

By simply searching for a name in the search box, it returns a VIAF ID, preferred and related names, and associated works.

The power of centralised authorities such as VIAF is when their data is exposed via an API (Application Programming Interface). A web API is accessed via a particular web address and allows computer programs to request information and receive it in a structured format suitable for further processing. Typically, this data will be provided in either JSON or XML.
VIAF has several different APIs, which we as humans can explore using the OCLC API Explorer.
EXERCISE: Click on the link above and then on the link "Auto Suggest". Modifiy the example query to search for "john stevens henslow" or any a personal name from the Henslow letters that you can recall.
You should get something like this:

It has returned a list of results, in JSON format, with VIAF's suggestions for the best match, which you can see in the right-hand "Response" pane.
We can consume this data programmatically using Python tools with which we are already familiar from earlier notebooks.
import requests
import json
# Make the query to the API
query = "john stevens henslow"
response = requests.get('http://www.viaf.org/viaf/AutoSuggest?query=' + query)
# Parse the JSON into a Python dictionary
data = json.loads(response.text)
# Get just the first entry in the results
data['result'][0]
{'term': 'John Stevens Henslow, 1796-1861',
'displayForm': 'John Stevens Henslow, 1796-1861',
'nametype': 'personal',
'lc': 'n81072491',
'dnb': '117517496',
'nla': '000036260997',
'viafid': '72173458',
'score': '2028',
'recordID': '72173458'}
If you compare this with the output of the API explorer above, you should see this is the same structure and information.
The VIAF ID is found in the 'vaifid' field:
data['result'][0]['viafid']
'72173458'
With this information we could now enrich the original XML with the VIAF ID for this named entity.
EXERCISE: What are the problems you could anticipate with this sort of automated linking?
The scientific community has been busy normalising, disambiguating, and aggregating similar types of data for decades, in a movement parallel but largely separate to developments in library science and humanities.
The Global Biodiversity Information Facility (GBIF) is an international open data aggregator for hundreds of millions of species records.

In the last notebook we tried to add a new named entity type TAXONOMY for the model to learn. We defined this as a type of entity for any Linnaean taxonomic name (domain, kingdom, phylum, division, class, order, family, genus or species). Binomials (genus plus species together) were labelled as one span.
Imagine if we wished to link these named taxonomic entities to the corresponding genus or species in the GBIF. How could we do this en masse?
Like VIAF, GBIF also has a set of web APIs and we can use the Species API to search for species names.
EXERCISE: Reading API documentation is a common activity for coders. Before you look at the code example below, open the Species API documentation, scroll down to the 'Searching Names' section and see if you can work out which of the four resource URLs would be most useful for our case.
Flowers of Pulmonaria officinalis
Let's start by trying one taxonomic (genus) name "Pulmonaria" to see what sort of result we can expect:
query = "Pulmonaria"
response = requests.get('https://api.gbif.org/v1/species/suggest?q=' + query)
data = json.loads(response.text)
data[0]
{'key': 2925903,
'kingdom': 'Plantae',
'phylum': 'Tracheophyta',
'order': 'Boraginales',
'family': 'Boraginaceae',
'genus': 'Pulmonaria',
'kingdomKey': 6,
'phylumKey': 7707728,
'classKey': 220,
'orderKey': 7226464,
'familyKey': 2498,
'genusKey': 2925903,
'parent': 'Boraginaceae',
'parentKey': 2498,
'nubKey': 2925903,
'scientificName': 'Pulmonaria L.',
'canonicalName': 'Pulmonaria',
'rank': 'GENUS',
'status': 'ACCEPTED',
'higherClassificationMap': {'6': 'Plantae',
'7707728': 'Tracheophyta',
'220': 'Magnoliopsida',
'7226464': 'Boraginales',
'2498': 'Boraginaceae'},
'synonym': False,
'class': 'Magnoliopsida'}
So far, so very similar to the VIAF API.
In reality, we need to be aware that some of the older names given to organisms in the Henslow letters are not easily reconciled with modern named taxa. (In the Darwin Correspondence Project (DCP), Shelley Innes, editor and research associate, is an expert in historical taxonomy and her work is available in the footnotes of the published DCP letters.)
Also, the Henslow letters often use ligature ash ('æ') rather than 'ae', which is used in family names in GBIF. The GBIF suggest API does not recognise 'æ' and 'ae' as equivalent so either our queries will need to be normalised, or we can try a different API.
Gall Wasp - Cynipidae family
If there is no matchable name in GBIF we get an empty result:
query = "Cynipidæ"
response = requests.get('https://api.gbif.org/v1/species/suggest?q=' + query)
data = json.loads(response.text)
data
[]
But if we try the search API instead there is no problem:
query = "Cynipidæ"
response = requests.get('https://api.gbif.org/v1/species/search?q=' + query)
data = json.loads(response.text)
data['results'][0]
{'key': 168821910,
'datasetKey': '5c1bc93a-1b31-41dc-989e-95844807cdd3',
'nubKey': 4339,
'parentKey': 168821909,
'parent': 'Hymenoptera',
'kingdom': 'Animalia',
'phylum': 'Arthropoda',
'order': 'Hymenoptera',
'family': 'Cynipidae',
'kingdomKey': 168821906,
'phylumKey': 168821907,
'classKey': 168821908,
'orderKey': 168821909,
'familyKey': 168821910,
'scientificName': 'Cynipidae',
'canonicalName': 'Cynipidae',
'authorship': '',
'nameType': 'SCIENTIFIC',
'taxonomicStatus': 'ACCEPTED',
'rank': 'FAMILY',
'origin': 'DENORMED_CLASSIFICATION',
'numDescendants': 4,
'numOccurrences': 0,
'habitats': [],
'nomenclaturalStatus': [],
'threatStatuses': [],
'descriptions': [],
'vernacularNames': [],
'higherClassificationMap': {'168821906': 'Animalia',
'168821907': 'Arthropoda',
'168821908': 'Insecta',
'168821909': 'Hymenoptera'},
'synonym': False,
'class': 'Insecta'}
Let's now take the list of taxonomic names from the previous notebook, cleaned up and normalised, and try to make an query with the whole list:
taxonomy = [
'Adippe',
'Alisma repens',
'Alopecurus bulbosus',
'Althaea hirsuta',
'Anthemis Cotula',
'Anthericum serotinum',
'Anthyllis vulneraria',
'Apargia hirta',
'Arabis thaliana',
'Araucaria imbricata',
'Artemisia gallica',
'Asclepiadeae',
'Aspidia',
'Asterophyllites',
'Atriplex laciniata',
'Bechera grandis',
'Blysmus compressus',
'Bos',
'Bos primigenius',
'Campanula rapunculus',
'Campanula rotundifolia',
'Carex',
'Carex laevigata',
'Centaurea solstitialis',
'Cerastium humile',
'Chara gracilis',
'Cheiranthus sinuatus',
'Chiasognathus Grantii',
'Chironia littoralis',
'Chrysosplenium alternifolium',
'Cirisia',
'Cochlearia danica',
'Commelina coelestis',
'Corbula costata',
'Coryphodon',
'Cracidae',
'Crocus sativus',
'Cryllas',
'Cucubalus baccifer',
'Cuscuta Epilinum',
'Cycas',
'Cycas circinalis',
'Cyperus',
'Cytheraea obliqua',
'Daucus maritimum',
'Dianthus caryophyllus',
'Digitalis',
'Diptera',
'Epilobium hirsutm',
'Eriocaulon',
'Eriophorum',
'Eriophorum polystachion',
'Eriophorum pubescens',
'Euphorbia portlandica',
'Favularia nodosa',
'G.campestris',
'Gallinula Baillonii',
'Glaucium violaceum',
'Globulus',
'Hedysarum',
'Hedysarum scandens',
'Hemiptera',
'Holoptychus',
'Hortus Siccus',
'Hymenophyllum tunbridgense',
'Iberis amara',
'Inula',
'Inula helenium ',
'Jungermanniae',
'Knautia',
'Lathyrus hirsutus',
'Lepidoptera',
'Linosyris',
'Linum angustifol',
'Lobelia urens',
'Lonicera caprifolium',
'Lysimachia',
'Malaxis Loeslii',
'Medicago denticulata',
'Melampyrum arvense',
'Melissa',
'Mentha gentilis',
'Menyanthes Nymphaeoides',
'Mespilus cotoneaster',
'Milium lendigerum',
'Narcissus poeticus',
'Nemeolius Lucina',
'Neuropteris cordata',
'Oenanthe crocata',
'Ophrys arachnites',
'Orchideae',
'Orobanche caryophylacea',
'Panicum viride',
'Peperomia',
'Phleum paniculatum',
'Pisidium',
'Polyporites Bowmanni',
'Potamides plicatus',
'Potamogeton fluitans',
'Potamogeton gramineum',
'Pothos',
'Primula',
'Primula scotica',
'Primula vulgaris',
'Psammobia rudis',
'Pulicaria',
'Pyrola',
'Pyrola minor',
'Pyrus pinnatifida',
'Pyrus torminalis',
'Quercus sessiliflora',
'Ribes alpinum',
'Rubus idaeus',
'Ruppia',
'Ruppia maritima',
'Salicornia radicans',
'Salvia pratensis',
'Santolina maritima',
'Scirpus caricinus',
'Scirpus pauciflorus',
'Sisymbrium monense',
'Sonchus palustris',
'Statice cordata',
'Tetrandria',
'Thalassophytes',
'Tormentilla reptans',
'Trifolium',
'Trifolium subterraneum',
'Turritis hirsuta',
'Typha',
'Ulmus suberosa',
'Vaccinium myrtillus',
'Velleius',
'Vinca major',
'Viola palustris',
'Volucella',
'Wellingtonia',
'Zostera marina',
]
%%time
result = {}
for query in taxonomy:
print(f'Fetching: https://api.gbif.org/v1/species/suggest?q={query}')
response = requests.get('https://api.gbif.org/v1/species/suggest?q=' + query)
data = json.loads(response.text)
if data:
print(f"Result: {data[0]}")
result[query] = data[0]
Fetching: https://api.gbif.org/v1/species/suggest?q=Adippe
Result: {'key': 2021871, 'kingdom': 'Animalia', 'phylum': 'Arthropoda', 'order': 'Hemiptera', 'family': 'Membracidae', 'genus': 'Adippe', 'kingdomKey': 1, 'phylumKey': 54, 'classKey': 216, 'orderKey': 809, 'familyKey': 7889, 'genusKey': 2021871, 'parent': 'Membracidae', 'parentKey': 7889, 'nubKey': 2021871, 'scientificName': 'Adippe Stål, 1867', 'canonicalName': 'Adippe', 'rank': 'GENUS', 'status': 'ACCEPTED', 'higherClassificationMap': {'1': 'Animalia', '54': 'Arthropoda', '216': 'Insecta', '809': 'Hemiptera', '7889': 'Membracidae'}, 'synonym': False, 'class': 'Insecta'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Alisma repens
Result: {'key': 2864550, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Alismatales', 'family': 'Alismataceae', 'genus': 'Baldellia', 'species': 'Baldellia repens', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 196, 'orderKey': 551, 'familyKey': 3720, 'genusKey': 2864545, 'speciesKey': 2864552, 'parent': 'Baldellia', 'parentKey': 2864545, 'nubKey': 2864550, 'scientificName': 'Alisma repens Lam.', 'canonicalName': 'Alisma repens', 'rank': 'SPECIES', 'status': 'HOMOTYPIC_SYNONYM', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '196': 'Liliopsida', '551': 'Alismatales', '3720': 'Alismataceae', '2864545': 'Baldellia', '2864552': 'Baldellia repens'}, 'synonym': True, 'class': 'Liliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Alopecurus bulbosus
Result: {'key': 7701181, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Poales', 'family': 'Poaceae', 'genus': 'Alopecurus', 'species': 'Alopecurus bulbosus', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 196, 'orderKey': 1369, 'familyKey': 3073, 'genusKey': 2705236, 'speciesKey': 7701181, 'parent': 'Alopecurus', 'parentKey': 2705236, 'scientificName': 'Alopecurus bulbosus Poir., 1789', 'canonicalName': 'Alopecurus bulbosus', 'rank': 'SPECIES', 'status': 'DOUBTFUL', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '196': 'Liliopsida', '1369': 'Poales', '3073': 'Poaceae', '2705236': 'Alopecurus'}, 'synonym': False, 'class': 'Liliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Althaea hirsuta
Result: {'key': 8529055, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Malvales', 'family': 'Malvaceae', 'genus': 'Malva', 'species': 'Malva cretica', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 941, 'familyKey': 6685, 'genusKey': 3152364, 'speciesKey': 8109348, 'parent': 'Malva cretica', 'parentKey': 8109348, 'scientificName': 'Althaea hirsuta Sieber', 'canonicalName': 'Althaea hirsuta', 'rank': 'SPECIES', 'status': 'HOMOTYPIC_SYNONYM', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '941': 'Malvales', '6685': 'Malvaceae', '3152364': 'Malva', '8109348': 'Malva cretica'}, 'synonym': True, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Anthemis Cotula
Result: {'key': 3086594, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Asterales', 'family': 'Asteraceae', 'genus': 'Eclipta', 'species': 'Eclipta alba', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 414, 'familyKey': 3065, 'genusKey': 3086569, 'speciesKey': 5384955, 'parent': 'Eclipta', 'parentKey': 3086569, 'nubKey': 3086594, 'scientificName': 'Anthemis cotula Blanco', 'canonicalName': 'Anthemis cotula', 'rank': 'SPECIES', 'status': 'HETEROTYPIC_SYNONYM', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '414': 'Asterales', '3065': 'Asteraceae', '3086569': 'Eclipta', '5384955': 'Eclipta alba'}, 'synonym': True, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Anthericum serotinum
Result: {'key': 8156461, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Asparagales', 'family': 'Asparagaceae', 'genus': 'Anthericum', 'species': 'Anthericum arkansasense', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 196, 'orderKey': 1169, 'familyKey': 7683, 'genusKey': 2741565, 'speciesKey': 3646274, 'parent': 'Anthericum', 'parentKey': 2741565, 'scientificName': 'Anthericum serotinum Baker', 'canonicalName': 'Anthericum serotinum', 'rank': 'SPECIES', 'status': 'SYNONYM', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '196': 'Liliopsida', '1169': 'Asparagales', '7683': 'Asparagaceae', '2741565': 'Anthericum', '3646274': 'Anthericum arkansasense'}, 'synonym': True, 'class': 'Liliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Anthyllis vulneraria
Result: {'key': 8798034, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Fabales', 'family': 'Fabaceae', 'genus': 'Anthyllis', 'species': 'Anthyllis vulneraria', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 1370, 'familyKey': 5386, 'genusKey': 2952416, 'speciesKey': 8773590, 'parent': 'Anthyllis', 'parentKey': 2952416, 'scientificName': 'Anthyllis vulneraria Schiw.', 'canonicalName': 'Anthyllis vulneraria', 'rank': 'SPECIES', 'status': 'HOMOTYPIC_SYNONYM', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '1370': 'Fabales', '5386': 'Fabaceae', '2952416': 'Anthyllis', '8773590': 'Anthyllis vulneraria'}, 'synonym': True, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Apargia hirta
Result: {'key': 9644456, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Asterales', 'family': 'Asteraceae', 'genus': 'Scorzoneroides', 'species': 'Scorzoneroides pyrenaica', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 414, 'familyKey': 3065, 'genusKey': 8301836, 'speciesKey': 3133504, 'parent': 'Scorzoneroides pyrenaica', 'parentKey': 3133504, 'scientificName': 'Apargia hirta Geners. ex Steud.', 'canonicalName': 'Apargia hirta', 'rank': 'SPECIES', 'status': 'HETEROTYPIC_SYNONYM', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '414': 'Asterales', '3065': 'Asteraceae', '8301836': 'Scorzoneroides', '3133504': 'Scorzoneroides pyrenaica'}, 'synonym': True, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Arabis thaliana
Result: {'key': 5377084, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Brassicales', 'family': 'Brassicaceae', 'genus': 'Arabidopsis', 'species': 'Arabidopsis thaliana', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 7225535, 'familyKey': 3112, 'genusKey': 3052435, 'speciesKey': 3052436, 'parent': 'Arabidopsis', 'parentKey': 3052435, 'nubKey': 5377084, 'scientificName': 'Arabis thaliana L.', 'canonicalName': 'Arabis thaliana', 'rank': 'SPECIES', 'status': 'HOMOTYPIC_SYNONYM', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '7225535': 'Brassicales', '3112': 'Brassicaceae', '3052435': 'Arabidopsis', '3052436': 'Arabidopsis thaliana'}, 'synonym': True, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Araucaria imbricata
Result: {'key': 2684987, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Pinales', 'family': 'Araucariaceae', 'genus': 'Araucaria', 'species': 'Araucaria araucana', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 194, 'orderKey': 640, 'familyKey': 3924, 'genusKey': 2684910, 'speciesKey': 2684984, 'parent': 'Araucaria', 'parentKey': 2684910, 'nubKey': 2684987, 'scientificName': 'Araucaria imbricata Pav.', 'canonicalName': 'Araucaria imbricata', 'rank': 'SPECIES', 'status': 'SYNONYM', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '194': 'Pinopsida', '640': 'Pinales', '3924': 'Araucariaceae', '2684910': 'Araucaria', '2684984': 'Araucaria araucana'}, 'synonym': True, 'class': 'Pinopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Artemisia gallica
Result: {'key': 7497549, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Asterales', 'family': 'Asteraceae', 'genus': 'Artemisia', 'species': 'Artemisia maritima', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 414, 'familyKey': 3065, 'genusKey': 3120641, 'speciesKey': 3121650, 'parent': 'Artemisia maritima', 'parentKey': 3121650, 'scientificName': 'Artemisia gallica Schur', 'canonicalName': 'Artemisia gallica', 'rank': 'SPECIES', 'status': 'HETEROTYPIC_SYNONYM', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '414': 'Asterales', '3065': 'Asteraceae', '3120641': 'Artemisia', '3121650': 'Artemisia maritima'}, 'synonym': True, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Asclepiadeae
Result: {'key': 8207397, 'kingdom': 'Animalia', 'phylum': 'Arthropoda', 'order': 'Lepidoptera', 'family': 'Pterophoridae', 'genus': 'Stenoptilia', 'species': 'Stenoptilia asclepiadeae', 'kingdomKey': 1, 'phylumKey': 54, 'classKey': 216, 'orderKey': 797, 'familyKey': 8863, 'genusKey': 1858722, 'speciesKey': 8207397, 'parent': 'Stenoptilia', 'parentKey': 1858722, 'scientificName': 'Stenoptilia asclepiadeae Bigot & Picard, 2008', 'canonicalName': 'Stenoptilia asclepiadeae', 'rank': 'SPECIES', 'status': 'ACCEPTED', 'higherClassificationMap': {'1': 'Animalia', '54': 'Arthropoda', '216': 'Insecta', '797': 'Lepidoptera', '8863': 'Pterophoridae', '1858722': 'Stenoptilia'}, 'synonym': False, 'class': 'Insecta'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Aspidia
Result: {'key': 3257338, 'kingdom': 'Animalia', 'phylum': 'Arthropoda', 'order': 'Lepidoptera', 'family': 'Tortricidae', 'genus': 'Notocelia', 'kingdomKey': 1, 'phylumKey': 54, 'classKey': 216, 'orderKey': 797, 'familyKey': 5343, 'genusKey': 1741338, 'parent': 'Tortricidae', 'parentKey': 5343, 'nubKey': 3257338, 'scientificName': 'Aspidia Duponchel, 1835', 'canonicalName': 'Aspidia', 'rank': 'GENUS', 'status': 'SYNONYM', 'higherClassificationMap': {'1': 'Animalia', '54': 'Arthropoda', '216': 'Insecta', '797': 'Lepidoptera', '5343': 'Tortricidae', '1741338': 'Notocelia'}, 'synonym': True, 'class': 'Insecta'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Asterophyllites
Result: {'key': 3229093, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Equisetales', 'family': 'Calamitaceae', 'genus': 'Asterophyllites', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 7228684, 'orderKey': 954, 'familyKey': 3229103, 'genusKey': 3229093, 'parent': 'Calamitaceae', 'parentKey': 3229103, 'nubKey': 3229093, 'scientificName': 'Asterophyllites A.T.Brongniart, 1828', 'canonicalName': 'Asterophyllites', 'rank': 'GENUS', 'status': 'ACCEPTED', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '7228684': 'Polypodiopsida', '954': 'Equisetales', '3229103': 'Calamitaceae'}, 'synonym': False, 'class': 'Polypodiopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Atriplex laciniata
Result: {'key': 7438666, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Caryophyllales', 'family': 'Amaranthaceae', 'genus': 'Atriplex', 'species': 'Atriplex patula', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 422, 'familyKey': 3064, 'genusKey': 10651755, 'speciesKey': 3083728, 'parent': 'Atriplex patula', 'parentKey': 3083728, 'scientificName': 'Atriplex laciniata Schkuhr', 'canonicalName': 'Atriplex laciniata', 'rank': 'SPECIES', 'status': 'HETEROTYPIC_SYNONYM', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '422': 'Caryophyllales', '3064': 'Amaranthaceae', '10651755': 'Atriplex', '3083728': 'Atriplex patula'}, 'synonym': True, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Bechera grandis
Fetching: https://api.gbif.org/v1/species/suggest?q=Blysmus compressus
Result: {'key': 2710650, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Poales', 'family': 'Cyperaceae', 'genus': 'Blysmus', 'species': 'Blysmus compressus', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 196, 'orderKey': 1369, 'familyKey': 7708, 'genusKey': 2710632, 'speciesKey': 2710650, 'parent': 'Blysmus', 'parentKey': 2710632, 'nubKey': 2710650, 'scientificName': 'Blysmus compressus (L.) Panz. ex Link', 'canonicalName': 'Blysmus compressus', 'rank': 'SPECIES', 'status': 'ACCEPTED', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '196': 'Liliopsida', '1369': 'Poales', '7708': 'Cyperaceae', '2710632': 'Blysmus'}, 'synonym': False, 'class': 'Liliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Bos
Result: {'key': 2441017, 'kingdom': 'Animalia', 'phylum': 'Chordata', 'order': 'Artiodactyla', 'family': 'Bovidae', 'genus': 'Bos', 'kingdomKey': 1, 'phylumKey': 44, 'classKey': 359, 'orderKey': 731, 'familyKey': 9614, 'genusKey': 2441017, 'parent': 'Bovidae', 'parentKey': 9614, 'nubKey': 2441017, 'scientificName': 'Bos Linnaeus, 1758', 'canonicalName': 'Bos', 'rank': 'GENUS', 'status': 'ACCEPTED', 'higherClassificationMap': {'1': 'Animalia', '44': 'Chordata', '359': 'Mammalia', '731': 'Artiodactyla', '9614': 'Bovidae'}, 'synonym': False, 'class': 'Mammalia'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Bos primigenius
Result: {'key': 2441024, 'kingdom': 'Animalia', 'phylum': 'Chordata', 'order': 'Artiodactyla', 'family': 'Bovidae', 'genus': 'Bos', 'species': 'Bos taurus', 'kingdomKey': 1, 'phylumKey': 44, 'classKey': 359, 'orderKey': 731, 'familyKey': 9614, 'genusKey': 2441017, 'speciesKey': 2441022, 'parent': 'Bos taurus', 'parentKey': 2441022, 'nubKey': 2441024, 'scientificName': 'Bos primigenius Bojanus, 1827', 'canonicalName': 'Bos primigenius', 'rank': 'SPECIES', 'status': 'SYNONYM', 'higherClassificationMap': {'1': 'Animalia', '44': 'Chordata', '359': 'Mammalia', '731': 'Artiodactyla', '9614': 'Bovidae', '2441017': 'Bos', '2441022': 'Bos taurus'}, 'synonym': True, 'class': 'Mammalia'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Campanula rapunculus
Result: {'key': 5411920, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Asterales', 'family': 'Campanulaceae', 'genus': 'Campanula', 'species': 'Campanula rapunculus', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 414, 'familyKey': 8801, 'genusKey': 3161935, 'speciesKey': 5411920, 'parent': 'Campanula', 'parentKey': 3161935, 'nubKey': 5411920, 'scientificName': 'Campanula rapunculus L.', 'canonicalName': 'Campanula rapunculus', 'rank': 'SPECIES', 'status': 'ACCEPTED', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '414': 'Asterales', '8801': 'Campanulaceae', '3161935': 'Campanula'}, 'synonym': False, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Campanula rotundifolia
Result: {'key': 5410907, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Asterales', 'family': 'Campanulaceae', 'genus': 'Campanula', 'species': 'Campanula rotundifolia', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 414, 'familyKey': 8801, 'genusKey': 3161935, 'speciesKey': 5410907, 'parent': 'Campanula', 'parentKey': 3161935, 'nubKey': 5410907, 'scientificName': 'Campanula rotundifolia L.', 'canonicalName': 'Campanula rotundifolia', 'rank': 'SPECIES', 'status': 'ACCEPTED', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '414': 'Asterales', '8801': 'Campanulaceae', '3161935': 'Campanula'}, 'synonym': False, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Carex
Result: {'key': 2721893, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Poales', 'family': 'Cyperaceae', 'genus': 'Carex', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 196, 'orderKey': 1369, 'familyKey': 7708, 'genusKey': 2721893, 'parent': 'Cyperaceae', 'parentKey': 7708, 'nubKey': 2721893, 'scientificName': 'Carex L.', 'canonicalName': 'Carex', 'rank': 'GENUS', 'status': 'ACCEPTED', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '196': 'Liliopsida', '1369': 'Poales', '7708': 'Cyperaceae'}, 'synonym': False, 'class': 'Liliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Carex laevigata
Result: {'key': 8028567, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Poales', 'family': 'Cyperaceae', 'genus': 'Carex', 'species': 'Carex camposii', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 196, 'orderKey': 1369, 'familyKey': 7708, 'genusKey': 2721893, 'speciesKey': 2724515, 'parent': 'Carex', 'parentKey': 2721893, 'scientificName': 'Carex laevigata Boiss.', 'canonicalName': 'Carex laevigata', 'rank': 'SPECIES', 'status': 'HETEROTYPIC_SYNONYM', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '196': 'Liliopsida', '1369': 'Poales', '7708': 'Cyperaceae', '2721893': 'Carex', '2724515': 'Carex camposii'}, 'synonym': True, 'class': 'Liliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Centaurea solstitialis
Result: {'key': 7952411, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Asterales', 'family': 'Asteraceae', 'genus': 'Centaurea', 'species': 'Centaurea solstitialis', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 414, 'familyKey': 3065, 'genusKey': 3127469, 'speciesKey': 7952411, 'parent': 'Centaurea', 'parentKey': 3127469, 'scientificName': 'Centaurea solstitialis Asso, 1779', 'canonicalName': 'Centaurea solstitialis', 'rank': 'SPECIES', 'status': 'DOUBTFUL', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '414': 'Asterales', '3065': 'Asteraceae', '3127469': 'Centaurea'}, 'synonym': False, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Cerastium humile
Fetching: https://api.gbif.org/v1/species/suggest?q=Chara gracilis
Result: {'key': 6451418, 'kingdom': 'Plantae', 'phylum': 'Charophyta', 'order': 'Charales', 'family': 'Characeae', 'genus': 'Nitella', 'species': 'Nitella gracilis', 'kingdomKey': 6, 'phylumKey': 7819616, 'classKey': 328, 'orderKey': 626, 'familyKey': 8782, 'genusKey': 2637771, 'speciesKey': 2637830, 'parent': 'Nitella', 'parentKey': 2637771, 'nubKey': 6451418, 'scientificName': 'Chara gracilis Sm., 1810', 'canonicalName': 'Chara gracilis', 'rank': 'SPECIES', 'status': 'SYNONYM', 'higherClassificationMap': {'6': 'Plantae', '7819616': 'Charophyta', '328': 'Charophyceae', '626': 'Charales', '8782': 'Characeae', '2637771': 'Nitella', '2637830': 'Nitella gracilis'}, 'synonym': True, 'class': 'Charophyceae'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Cheiranthus sinuatus
Result: {'key': 5377374, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Brassicales', 'family': 'Brassicaceae', 'genus': 'Matthiola', 'species': 'Matthiola sinuata', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 7225535, 'familyKey': 3112, 'genusKey': 3052933, 'speciesKey': 5377368, 'parent': 'Matthiola', 'parentKey': 3052933, 'nubKey': 5377374, 'scientificName': 'Cheiranthus sinuatus L.', 'canonicalName': 'Cheiranthus sinuatus', 'rank': 'SPECIES', 'status': 'HOMOTYPIC_SYNONYM', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '7225535': 'Brassicales', '3112': 'Brassicaceae', '3052933': 'Matthiola', '5377368': 'Matthiola sinuata'}, 'synonym': True, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Chiasognathus Grantii
Result: {'key': 8098758, 'kingdom': 'Animalia', 'phylum': 'Arthropoda', 'order': 'Coleoptera', 'family': 'Lucanidae', 'genus': 'Chiasognathus', 'species': 'Chiasognathus grantii', 'kingdomKey': 1, 'phylumKey': 54, 'classKey': 216, 'orderKey': 1470, 'familyKey': 3263244, 'genusKey': 4736463, 'speciesKey': 8098758, 'parent': 'Chiasognathus', 'parentKey': 4736463, 'scientificName': 'Chiasognathus grantii Stephens, 1831', 'canonicalName': 'Chiasognathus grantii', 'rank': 'SPECIES', 'status': 'ACCEPTED', 'higherClassificationMap': {'1': 'Animalia', '54': 'Arthropoda', '216': 'Insecta', '1470': 'Coleoptera', '3263244': 'Lucanidae', '4736463': 'Chiasognathus'}, 'synonym': False, 'class': 'Insecta'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Chironia littoralis
Result: {'key': 5595752, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Gentianales', 'family': 'Gentianaceae', 'genus': 'Centaurium', 'species': 'Centaurium littorale', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 412, 'familyKey': 2503, 'genusKey': 7412173, 'speciesKey': 5414469, 'parent': 'Centaurium littorale', 'parentKey': 5414469, 'nubKey': 5595752, 'scientificName': 'Chironia littoralis Turner', 'canonicalName': 'Chironia littoralis', 'rank': 'SPECIES', 'status': 'HOMOTYPIC_SYNONYM', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '412': 'Gentianales', '2503': 'Gentianaceae', '7412173': 'Centaurium', '5414469': 'Centaurium littorale'}, 'synonym': True, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Chrysosplenium alternifolium
Result: {'key': 7339315, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Saxifragales', 'family': 'Saxifragaceae', 'genus': 'Chrysosplenium', 'species': 'Chrysosplenium alternifolium', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 7219248, 'familyKey': 2402, 'genusKey': 3032632, 'speciesKey': 7339315, 'parent': 'Chrysosplenium', 'parentKey': 3032632, 'nubKey': 7339315, 'scientificName': 'Chrysosplenium alternifolium L.', 'canonicalName': 'Chrysosplenium alternifolium', 'rank': 'SPECIES', 'status': 'ACCEPTED', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '7219248': 'Saxifragales', '2402': 'Saxifragaceae', '3032632': 'Chrysosplenium'}, 'synonym': False, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Cirisia
Result: {'key': 7417776, 'kingdom': 'Chromista', 'phylum': 'Ochrophyta', 'order': 'Naviculales', 'family': 'Amphipleuraceae', 'genus': 'Frustulia', 'species': 'Frustulia cirisiae', 'kingdomKey': 4, 'phylumKey': 98, 'classKey': 7947184, 'orderKey': 7763029, 'familyKey': 8328409, 'genusKey': 7962540, 'speciesKey': 7417776, 'parent': 'Frustulia', 'parentKey': 7962540, 'scientificName': 'Frustulia cirisiae B.Van de Vijver, 2002', 'canonicalName': 'Frustulia cirisiae', 'rank': 'SPECIES', 'status': 'ACCEPTED', 'higherClassificationMap': {'4': 'Chromista', '98': 'Ochrophyta', '7947184': 'Bacillariophyceae', '7763029': 'Naviculales', '8328409': 'Amphipleuraceae', '7962540': 'Frustulia'}, 'synonym': False, 'class': 'Bacillariophyceae'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Cochlearia danica
Result: {'key': 8033338, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Brassicales', 'family': 'Brassicaceae', 'genus': 'Cochlearia', 'species': 'Cochlearia danica', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 7225535, 'familyKey': 3112, 'genusKey': 3040481, 'speciesKey': 8033338, 'parent': 'Cochlearia', 'parentKey': 3040481, 'scientificName': 'Cochlearia danica Gunnerus, 1772', 'canonicalName': 'Cochlearia danica', 'rank': 'SPECIES', 'status': 'DOUBTFUL', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '7225535': 'Brassicales', '3112': 'Brassicaceae', '3040481': 'Cochlearia'}, 'synonym': False, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Commelina coelestis
Result: {'key': 2764454, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Commelinales', 'family': 'Commelinaceae', 'genus': 'Commelina', 'species': 'Commelina coelestis', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 196, 'orderKey': 553, 'familyKey': 2763195, 'genusKey': 2763939, 'speciesKey': 2764454, 'parent': 'Commelina', 'parentKey': 2763939, 'nubKey': 2764454, 'scientificName': 'Commelina coelestis Willd.', 'canonicalName': 'Commelina coelestis', 'rank': 'SPECIES', 'status': 'ACCEPTED', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '196': 'Liliopsida', '553': 'Commelinales', '2763195': 'Commelinaceae', '2763939': 'Commelina'}, 'synonym': False, 'class': 'Liliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Corbula costata
Fetching: https://api.gbif.org/v1/species/suggest?q=Coryphodon
Result: {'key': 3239951, 'kingdom': 'Animalia', 'phylum': 'Chordata', 'family': 'Coryphodontidae', 'genus': 'Coryphodon', 'kingdomKey': 1, 'phylumKey': 44, 'classKey': 359, 'familyKey': 3239950, 'genusKey': 3239951, 'parent': 'Coryphodontidae', 'parentKey': 3239950, 'nubKey': 3239951, 'scientificName': 'Coryphodon Owen, 1845', 'canonicalName': 'Coryphodon', 'rank': 'GENUS', 'status': 'ACCEPTED', 'higherClassificationMap': {'1': 'Animalia', '44': 'Chordata', '359': 'Mammalia', '3239950': 'Coryphodontidae'}, 'synonym': False, 'class': 'Mammalia'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Cracidae
Result: {'key': 5237, 'kingdom': 'Animalia', 'phylum': 'Chordata', 'order': 'Galliformes', 'family': 'Cracidae', 'kingdomKey': 1, 'phylumKey': 44, 'classKey': 212, 'orderKey': 723, 'familyKey': 5237, 'parent': 'Galliformes', 'parentKey': 723, 'nubKey': 5237, 'scientificName': 'Cracidae', 'canonicalName': 'Cracidae', 'rank': 'FAMILY', 'status': 'ACCEPTED', 'higherClassificationMap': {'1': 'Animalia', '44': 'Chordata', '212': 'Aves', '723': 'Galliformes'}, 'synonym': False, 'class': 'Aves'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Crocus sativus
Result: {'key': 7935612, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Asparagales', 'family': 'Iridaceae', 'genus': 'Crocus', 'species': 'Crocus sativus', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 196, 'orderKey': 1169, 'familyKey': 7698, 'genusKey': 2747303, 'speciesKey': 7935612, 'parent': 'Crocus', 'parentKey': 2747303, 'scientificName': 'Crocus sativus Mill., 1768', 'canonicalName': 'Crocus sativus', 'rank': 'SPECIES', 'status': 'DOUBTFUL', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '196': 'Liliopsida', '1169': 'Asparagales', '7698': 'Iridaceae', '2747303': 'Crocus'}, 'synonym': False, 'class': 'Liliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Cryllas
Fetching: https://api.gbif.org/v1/species/suggest?q=Cucubalus baccifer
Result: {'key': 7268155, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Caryophyllales', 'family': 'Caryophyllaceae', 'genus': 'Silene', 'species': 'Silene baccifera', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 422, 'familyKey': 2518, 'genusKey': 3085897, 'speciesKey': 7267309, 'parent': 'Silene', 'parentKey': 3085897, 'nubKey': 7268155, 'scientificName': 'Cucubalus baccifer L.', 'canonicalName': 'Cucubalus baccifer', 'rank': 'SPECIES', 'status': 'HOMOTYPIC_SYNONYM', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '422': 'Caryophyllales', '2518': 'Caryophyllaceae', '3085897': 'Silene', '7267309': 'Silene baccifera'}, 'synonym': True, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Cuscuta Epilinum
Result: {'key': 2927530, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Solanales', 'family': 'Convolvulaceae', 'genus': 'Cuscuta', 'species': 'Cuscuta epilinum', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 1176, 'familyKey': 2389, 'genusKey': 2927479, 'speciesKey': 2927530, 'parent': 'Cuscuta', 'parentKey': 2927479, 'nubKey': 2927530, 'scientificName': 'Cuscuta epilinum Weihe', 'canonicalName': 'Cuscuta epilinum', 'rank': 'SPECIES', 'status': 'ACCEPTED', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '1176': 'Solanales', '2389': 'Convolvulaceae', '2927479': 'Cuscuta'}, 'synonym': False, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Cycas
Result: {'key': 2683206, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Cycadales', 'family': 'Cycadaceae', 'genus': 'Cycas', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 228, 'orderKey': 834, 'familyKey': 6168, 'genusKey': 2683206, 'parent': 'Cycadaceae', 'parentKey': 6168, 'nubKey': 2683206, 'scientificName': 'Cycas L.', 'canonicalName': 'Cycas', 'rank': 'GENUS', 'status': 'ACCEPTED', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '228': 'Cycadopsida', '834': 'Cycadales', '6168': 'Cycadaceae'}, 'synonym': False, 'class': 'Cycadopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Cycas circinalis
Result: {'key': 2683264, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Cycadales', 'family': 'Cycadaceae', 'genus': 'Cycas', 'species': 'Cycas circinalis', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 228, 'orderKey': 834, 'familyKey': 6168, 'genusKey': 2683206, 'speciesKey': 2683264, 'parent': 'Cycas', 'parentKey': 2683206, 'nubKey': 2683264, 'scientificName': 'Cycas circinalis L.', 'canonicalName': 'Cycas circinalis', 'rank': 'SPECIES', 'status': 'ACCEPTED', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '228': 'Cycadopsida', '834': 'Cycadales', '6168': 'Cycadaceae', '2683206': 'Cycas'}, 'synonym': False, 'class': 'Cycadopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Cyperus
Result: {'key': 2713455, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Poales', 'family': 'Cyperaceae', 'genus': 'Cyperus', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 196, 'orderKey': 1369, 'familyKey': 7708, 'genusKey': 2713455, 'parent': 'Cyperaceae', 'parentKey': 7708, 'nubKey': 2713455, 'scientificName': 'Cyperus L.', 'canonicalName': 'Cyperus', 'rank': 'GENUS', 'status': 'ACCEPTED', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '196': 'Liliopsida', '1369': 'Poales', '7708': 'Cyperaceae'}, 'synonym': False, 'class': 'Liliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Cytheraea obliqua
Fetching: https://api.gbif.org/v1/species/suggest?q=Daucus maritimum
Fetching: https://api.gbif.org/v1/species/suggest?q=Dianthus caryophyllus
Result: {'key': 3085420, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Caryophyllales', 'family': 'Caryophyllaceae', 'genus': 'Dianthus', 'species': 'Dianthus caryophyllus', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 422, 'familyKey': 2518, 'genusKey': 3085411, 'speciesKey': 3085420, 'parent': 'Dianthus', 'parentKey': 3085411, 'nubKey': 3085420, 'scientificName': 'Dianthus caryophyllus L.', 'canonicalName': 'Dianthus caryophyllus', 'rank': 'SPECIES', 'status': 'ACCEPTED', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '422': 'Caryophyllales', '2518': 'Caryophyllaceae', '3085411': 'Dianthus'}, 'synonym': False, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Digitalis
Result: {'key': 2029486, 'kingdom': 'Animalia', 'phylum': 'Arthropoda', 'order': 'Hemiptera', 'family': 'Cicadellidae', 'genus': 'Digitalis', 'kingdomKey': 1, 'phylumKey': 54, 'classKey': 216, 'orderKey': 809, 'familyKey': 9647, 'genusKey': 2029486, 'parent': 'Cicadellidae', 'parentKey': 9647, 'nubKey': 2029486, 'scientificName': 'Digitalis Liu & Zhang, 2002', 'canonicalName': 'Digitalis', 'rank': 'GENUS', 'status': 'ACCEPTED', 'higherClassificationMap': {'1': 'Animalia', '54': 'Arthropoda', '216': 'Insecta', '809': 'Hemiptera', '9647': 'Cicadellidae'}, 'synonym': False, 'class': 'Insecta'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Diptera
Result: {'key': 811, 'kingdom': 'Animalia', 'phylum': 'Arthropoda', 'order': 'Diptera', 'kingdomKey': 1, 'phylumKey': 54, 'classKey': 216, 'orderKey': 811, 'parent': 'Insecta', 'parentKey': 216, 'nubKey': 811, 'scientificName': 'Diptera', 'canonicalName': 'Diptera', 'rank': 'ORDER', 'status': 'ACCEPTED', 'higherClassificationMap': {'1': 'Animalia', '54': 'Arthropoda', '216': 'Insecta'}, 'synonym': False, 'class': 'Insecta'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Epilobium hirsutm
Fetching: https://api.gbif.org/v1/species/suggest?q=Eriocaulon
Result: {'key': 2690243, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Poales', 'family': 'Eriocaulaceae', 'genus': 'Eriocaulon', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 196, 'orderKey': 1369, 'familyKey': 3741, 'genusKey': 2690243, 'parent': 'Eriocaulaceae', 'parentKey': 3741, 'nubKey': 2690243, 'scientificName': 'Eriocaulon L.', 'canonicalName': 'Eriocaulon', 'rank': 'GENUS', 'status': 'ACCEPTED', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '196': 'Liliopsida', '1369': 'Poales', '3741': 'Eriocaulaceae'}, 'synonym': False, 'class': 'Liliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Eriophorum
Result: {'key': 2730118, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Poales', 'family': 'Cyperaceae', 'genus': 'Eriophorum', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 196, 'orderKey': 1369, 'familyKey': 7708, 'genusKey': 2730118, 'parent': 'Cyperaceae', 'parentKey': 7708, 'nubKey': 2730118, 'scientificName': 'Eriophorum L.', 'canonicalName': 'Eriophorum', 'rank': 'GENUS', 'status': 'ACCEPTED', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '196': 'Liliopsida', '1369': 'Poales', '7708': 'Cyperaceae'}, 'synonym': False, 'class': 'Liliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Eriophorum polystachion
Result: {'key': 8217633, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Poales', 'family': 'Cyperaceae', 'genus': 'Eriophorum', 'species': 'Eriophorum polystachion', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 196, 'orderKey': 1369, 'familyKey': 7708, 'genusKey': 2730118, 'speciesKey': 8217633, 'parent': 'Eriophorum', 'parentKey': 2730118, 'scientificName': 'Eriophorum polystachion Sm.', 'canonicalName': 'Eriophorum polystachion', 'rank': 'SPECIES', 'status': 'ACCEPTED', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '196': 'Liliopsida', '1369': 'Poales', '7708': 'Cyperaceae', '2730118': 'Eriophorum'}, 'synonym': False, 'class': 'Liliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Eriophorum pubescens
Result: {'key': 2730212, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Poales', 'family': 'Cyperaceae', 'genus': 'Eriophorum', 'species': 'Eriophorum latifolium', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 196, 'orderKey': 1369, 'familyKey': 7708, 'genusKey': 2730118, 'speciesKey': 2730210, 'parent': 'Eriophorum', 'parentKey': 2730118, 'nubKey': 2730212, 'scientificName': 'Eriophorum pubescens Sm.', 'canonicalName': 'Eriophorum pubescens', 'rank': 'SPECIES', 'status': 'SYNONYM', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '196': 'Liliopsida', '1369': 'Poales', '7708': 'Cyperaceae', '2730118': 'Eriophorum', '2730210': 'Eriophorum latifolium'}, 'synonym': True, 'class': 'Liliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Euphorbia portlandica
Result: {'key': 7954368, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Malpighiales', 'family': 'Euphorbiaceae', 'genus': 'Euphorbia', 'species': 'Euphorbia portlandica', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 1414, 'familyKey': 4691, 'genusKey': 3063749, 'speciesKey': 7954368, 'parent': 'Euphorbia', 'parentKey': 3063749, 'scientificName': 'Euphorbia portlandica Sm., 1809', 'canonicalName': 'Euphorbia portlandica', 'rank': 'SPECIES', 'status': 'DOUBTFUL', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '1414': 'Malpighiales', '4691': 'Euphorbiaceae', '3063749': 'Euphorbia'}, 'synonym': False, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Favularia nodosa
Fetching: https://api.gbif.org/v1/species/suggest?q=G.campestris
Fetching: https://api.gbif.org/v1/species/suggest?q=Gallinula Baillonii
Fetching: https://api.gbif.org/v1/species/suggest?q=Glaucium violaceum
Result: {'key': 5531201, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Ranunculales', 'family': 'Papaveraceae', 'genus': 'Roemeria', 'species': 'Roemeria hybrida', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 399, 'familyKey': 2422, 'genusKey': 2888427, 'speciesKey': 7315023, 'parent': 'Roemeria hybrida', 'parentKey': 7315023, 'nubKey': 5531201, 'scientificName': 'Glaucium violaceum Juss.', 'canonicalName': 'Glaucium violaceum', 'rank': 'SPECIES', 'status': 'SYNONYM', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '399': 'Ranunculales', '2422': 'Papaveraceae', '2888427': 'Roemeria', '7315023': 'Roemeria hybrida'}, 'synonym': True, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Globulus
Result: {'key': 3243867, 'kingdom': 'Animalia', 'phylum': 'Mollusca', 'order': 'Littorinimorpha', 'family': 'Naticidae', 'genus': 'Globulus', 'kingdomKey': 1, 'phylumKey': 52, 'classKey': 225, 'orderKey': 7390893, 'familyKey': 7072, 'genusKey': 3243867, 'parent': 'Naticidae', 'parentKey': 7072, 'nubKey': 3243867, 'scientificName': 'Globulus Sowerby, 1834', 'canonicalName': 'Globulus', 'rank': 'GENUS', 'status': 'DOUBTFUL', 'higherClassificationMap': {'1': 'Animalia', '52': 'Mollusca', '225': 'Gastropoda', '7390893': 'Littorinimorpha', '7072': 'Naticidae'}, 'synonym': False, 'class': 'Gastropoda'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Hedysarum
Result: {'key': 2960767, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Fabales', 'family': 'Fabaceae', 'genus': 'Hedysarum', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 1370, 'familyKey': 5386, 'genusKey': 2960767, 'parent': 'Fabaceae', 'parentKey': 5386, 'nubKey': 2960767, 'scientificName': 'Hedysarum L.', 'canonicalName': 'Hedysarum', 'rank': 'GENUS', 'status': 'ACCEPTED', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '1370': 'Fabales', '5386': 'Fabaceae'}, 'synonym': False, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Hedysarum scandens
Result: {'key': 3908081, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Fabales', 'family': 'Fabaceae', 'genus': 'Hedysarum', 'species': 'Hedysarum scandens', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 1370, 'familyKey': 5386, 'genusKey': 2960767, 'speciesKey': 3908081, 'parent': 'Hedysarum', 'parentKey': 2960767, 'nubKey': 3908081, 'scientificName': 'Hedysarum scandens Sessé & Moc.', 'canonicalName': 'Hedysarum scandens', 'rank': 'SPECIES', 'status': 'DOUBTFUL', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '1370': 'Fabales', '5386': 'Fabaceae', '2960767': 'Hedysarum'}, 'synonym': False, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Hemiptera
Result: {'key': 809, 'kingdom': 'Animalia', 'phylum': 'Arthropoda', 'order': 'Hemiptera', 'kingdomKey': 1, 'phylumKey': 54, 'classKey': 216, 'orderKey': 809, 'parent': 'Insecta', 'parentKey': 216, 'nubKey': 809, 'scientificName': 'Hemiptera', 'canonicalName': 'Hemiptera', 'rank': 'ORDER', 'status': 'ACCEPTED', 'higherClassificationMap': {'1': 'Animalia', '54': 'Arthropoda', '216': 'Insecta'}, 'synonym': False, 'class': 'Insecta'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Holoptychus
Result: {'key': 9345666, 'kingdom': 'Animalia', 'phylum': 'Chordata', 'family': 'Holoptychiidae', 'genus': 'Holoptychus', 'kingdomKey': 1, 'phylumKey': 44, 'classKey': 238, 'familyKey': 3238369, 'genusKey': 9345666, 'parent': 'Holoptychiidae', 'parentKey': 3238369, 'scientificName': 'Holoptychus Agassiz, 1839', 'canonicalName': 'Holoptychus', 'rank': 'GENUS', 'status': 'ACCEPTED', 'higherClassificationMap': {'1': 'Animalia', '44': 'Chordata', '238': 'Sarcopterygii', '3238369': 'Holoptychiidae'}, 'synonym': False, 'class': 'Sarcopterygii'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Hortus Siccus
Fetching: https://api.gbif.org/v1/species/suggest?q=Hymenophyllum tunbridgense
Result: {'key': 2651316, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Hymenophyllales', 'family': 'Hymenophyllaceae', 'genus': 'Hymenophyllum', 'species': 'Hymenophyllum tunbridgense', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 7228684, 'orderKey': 7228685, 'familyKey': 2372, 'genusKey': 2651287, 'speciesKey': 2651316, 'parent': 'Hymenophyllum', 'parentKey': 2651287, 'nubKey': 2651316, 'scientificName': 'Hymenophyllum tunbridgense Sm.', 'canonicalName': 'Hymenophyllum tunbridgense', 'rank': 'SPECIES', 'status': 'DOUBTFUL', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '7228684': 'Polypodiopsida', '7228685': 'Hymenophyllales', '2372': 'Hymenophyllaceae', '2651287': 'Hymenophyllum'}, 'synonym': False, 'class': 'Polypodiopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Iberis amara
Result: {'key': 5377163, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Brassicales', 'family': 'Brassicaceae', 'genus': 'Iberis', 'species': 'Iberis amara', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 7225535, 'familyKey': 3112, 'genusKey': 5377149, 'speciesKey': 5377163, 'parent': 'Iberis', 'parentKey': 5377149, 'nubKey': 5377163, 'scientificName': 'Iberis amara L.', 'canonicalName': 'Iberis amara', 'rank': 'SPECIES', 'status': 'ACCEPTED', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '7225535': 'Brassicales', '3112': 'Brassicaceae', '5377149': 'Iberis'}, 'synonym': False, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Inula
Result: {'key': 3148323, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Asterales', 'family': 'Asteraceae', 'genus': 'Inula', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 414, 'familyKey': 3065, 'genusKey': 3148323, 'parent': 'Asteraceae', 'parentKey': 3065, 'nubKey': 3148323, 'scientificName': 'Inula L.', 'canonicalName': 'Inula', 'rank': 'GENUS', 'status': 'ACCEPTED', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '414': 'Asterales', '3065': 'Asteraceae'}, 'synonym': False, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Inula helenium
Result: {'key': 3148340, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Asterales', 'family': 'Asteraceae', 'genus': 'Inula', 'species': 'Inula helenium', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 414, 'familyKey': 3065, 'genusKey': 3148323, 'speciesKey': 3148340, 'parent': 'Inula', 'parentKey': 3148323, 'nubKey': 3148340, 'scientificName': 'Inula helenium L.', 'canonicalName': 'Inula helenium', 'rank': 'SPECIES', 'status': 'ACCEPTED', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '414': 'Asterales', '3065': 'Asteraceae', '3148323': 'Inula'}, 'synonym': False, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Jungermanniae
Result: {'key': 2581780, 'kingdom': 'Fungi', 'phylum': 'Ascomycota', 'order': 'Lichinodiales', 'family': 'Lichinodiaceae', 'genus': 'Mniaecia', 'species': 'Mniaecia jungermanniae', 'kingdomKey': 5, 'phylumKey': 95, 'classKey': 179, 'orderKey': 10695327, 'familyKey': 10772212, 'genusKey': 2581775, 'speciesKey': 2581779, 'parent': 'Mniaecia', 'parentKey': 2581775, 'nubKey': 2581780, 'scientificName': 'Pseudopeziza jungermanniae (Fr.) Fuckel', 'canonicalName': 'Pseudopeziza jungermanniae', 'rank': 'SPECIES', 'status': 'SYNONYM', 'higherClassificationMap': {'5': 'Fungi', '95': 'Ascomycota', '179': 'Leotiomycetes', '10695327': 'Lichinodiales', '10772212': 'Lichinodiaceae', '2581775': 'Mniaecia', '2581779': 'Mniaecia jungermanniae'}, 'synonym': True, 'class': 'Leotiomycetes'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Knautia
Result: {'key': 2888807, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Dipsacales', 'family': 'Caprifoliaceae', 'genus': 'Knautia', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 946, 'familyKey': 6710, 'genusKey': 2888807, 'parent': 'Caprifoliaceae', 'parentKey': 6710, 'nubKey': 2888807, 'scientificName': 'Knautia L.', 'canonicalName': 'Knautia', 'rank': 'GENUS', 'status': 'ACCEPTED', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '946': 'Dipsacales', '6710': 'Caprifoliaceae'}, 'synonym': False, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Lathyrus hirsutus
Result: {'key': 5356382, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Fabales', 'family': 'Fabaceae', 'genus': 'Lathyrus', 'species': 'Lathyrus hirsutus', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 1370, 'familyKey': 5386, 'genusKey': 10356062, 'speciesKey': 5356382, 'parent': 'Lathyrus', 'parentKey': 10356062, 'nubKey': 5356382, 'scientificName': 'Lathyrus hirsutus L.', 'canonicalName': 'Lathyrus hirsutus', 'rank': 'SPECIES', 'status': 'ACCEPTED', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '1370': 'Fabales', '5386': 'Fabaceae', '10356062': 'Lathyrus'}, 'synonym': False, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Lepidoptera
Result: {'key': 797, 'kingdom': 'Animalia', 'phylum': 'Arthropoda', 'order': 'Lepidoptera', 'kingdomKey': 1, 'phylumKey': 54, 'classKey': 216, 'orderKey': 797, 'parent': 'Insecta', 'parentKey': 216, 'nubKey': 797, 'scientificName': 'Lepidoptera', 'canonicalName': 'Lepidoptera', 'rank': 'ORDER', 'status': 'ACCEPTED', 'higherClassificationMap': {'1': 'Animalia', '54': 'Arthropoda', '216': 'Insecta'}, 'synonym': False, 'class': 'Insecta'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Linosyris
Result: {'key': 3138681, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Asterales', 'family': 'Asteraceae', 'genus': 'Galatella', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 414, 'familyKey': 3065, 'genusKey': 3091599, 'parent': 'Asteraceae', 'parentKey': 3065, 'nubKey': 3138681, 'scientificName': 'Linosyris Cass.', 'canonicalName': 'Linosyris', 'rank': 'GENUS', 'status': 'SYNONYM', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '414': 'Asterales', '3065': 'Asteraceae', '3091599': 'Galatella'}, 'synonym': True, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Linum angustifol
Result: {'key': 7580603, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Malpighiales', 'family': 'Linaceae', 'genus': 'Linum', 'species': 'Linum bienne', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 1414, 'familyKey': 2493, 'genusKey': 2873855, 'speciesKey': 2873896, 'parent': 'Linum', 'parentKey': 2873855, 'scientificName': 'Linum angustifolium var. cribrosum (Rchb.) Rouy', 'canonicalName': 'Linum angustifolium cribrosum', 'rank': 'VARIETY', 'status': 'SYNONYM', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '1414': 'Malpighiales', '2493': 'Linaceae', '2873855': 'Linum', '2873896': 'Linum bienne'}, 'synonym': True, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Lobelia urens
Result: {'key': 5408353, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Asterales', 'family': 'Campanulaceae', 'genus': 'Lobelia', 'species': 'Lobelia urens', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 414, 'familyKey': 8801, 'genusKey': 2756426, 'speciesKey': 5408353, 'parent': 'Lobelia', 'parentKey': 2756426, 'nubKey': 5408353, 'scientificName': 'Lobelia urens L.', 'canonicalName': 'Lobelia urens', 'rank': 'SPECIES', 'status': 'ACCEPTED', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '414': 'Asterales', '8801': 'Campanulaceae', '2756426': 'Lobelia'}, 'synonym': False, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Lonicera caprifolium
Result: {'key': 5334227, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Dipsacales', 'family': 'Caprifoliaceae', 'genus': 'Lonicera', 'species': 'Lonicera caprifolium', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 946, 'familyKey': 6710, 'genusKey': 2888645, 'speciesKey': 5334227, 'parent': 'Lonicera', 'parentKey': 2888645, 'nubKey': 5334227, 'scientificName': 'Lonicera caprifolium L.', 'canonicalName': 'Lonicera caprifolium', 'rank': 'SPECIES', 'status': 'ACCEPTED', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '946': 'Dipsacales', '6710': 'Caprifoliaceae', '2888645': 'Lonicera'}, 'synonym': False, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Lysimachia
Result: {'key': 3169330, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Ericales', 'family': 'Primulaceae', 'genus': 'Lysimachia', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 1353, 'familyKey': 6674, 'genusKey': 3169330, 'parent': 'Primulaceae', 'parentKey': 6674, 'nubKey': 3169330, 'scientificName': 'Lysimachia L.', 'canonicalName': 'Lysimachia', 'rank': 'GENUS', 'status': 'ACCEPTED', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '1353': 'Ericales', '6674': 'Primulaceae'}, 'synonym': False, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Malaxis Loeslii
Fetching: https://api.gbif.org/v1/species/suggest?q=Medicago denticulata
Result: {'key': 2965545, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Fabales', 'family': 'Fabaceae', 'genus': 'Medicago', 'species': 'Medicago polymorpha', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 1370, 'familyKey': 5386, 'genusKey': 2965200, 'speciesKey': 2965531, 'parent': 'Medicago', 'parentKey': 2965200, 'nubKey': 2965545, 'scientificName': 'Medicago denticulata Willd.', 'canonicalName': 'Medicago denticulata', 'rank': 'SPECIES', 'status': 'SYNONYM', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '1370': 'Fabales', '5386': 'Fabaceae', '2965200': 'Medicago', '2965531': 'Medicago polymorpha'}, 'synonym': True, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Melampyrum arvense
Result: {'key': 7331741, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Lamiales', 'family': 'Orobanchaceae', 'genus': 'Melampyrum', 'species': 'Melampyrum arvense', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 408, 'familyKey': 6651, 'genusKey': 3171737, 'speciesKey': 7331741, 'parent': 'Melampyrum', 'parentKey': 3171737, 'nubKey': 7331741, 'scientificName': 'Melampyrum arvense L.', 'canonicalName': 'Melampyrum arvense', 'rank': 'SPECIES', 'status': 'ACCEPTED', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '408': 'Lamiales', '6651': 'Orobanchaceae', '3171737': 'Melampyrum'}, 'synonym': False, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Melissa
Result: {'key': 8671411, 'kingdom': 'Animalia', 'phylum': 'Arthropoda', 'order': 'Hymenoptera', 'family': 'Apidae', 'genus': 'Melissa', 'kingdomKey': 1, 'phylumKey': 54, 'classKey': 216, 'orderKey': 1457, 'familyKey': 4334, 'genusKey': 8671411, 'parent': 'Apidae', 'parentKey': 4334, 'scientificName': 'Melissa Smith, 1854', 'canonicalName': 'Melissa', 'rank': 'GENUS', 'status': 'DOUBTFUL', 'higherClassificationMap': {'1': 'Animalia', '54': 'Arthropoda', '216': 'Insecta', '1457': 'Hymenoptera', '4334': 'Apidae'}, 'synonym': False, 'class': 'Insecta'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Mentha gentilis
Result: {'key': 7872648, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Lamiales', 'family': 'Lamiaceae', 'genus': 'Mentha', 'species': 'Mentha arvensis', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 408, 'familyKey': 2497, 'genusKey': 2927173, 'speciesKey': 2927192, 'parent': 'Mentha', 'parentKey': 2927173, 'scientificName': 'Mentha gentilis Georgi', 'canonicalName': 'Mentha gentilis', 'rank': 'SPECIES', 'status': 'HETEROTYPIC_SYNONYM', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '408': 'Lamiales', '2497': 'Lamiaceae', '2927173': 'Mentha', '2927192': 'Mentha arvensis'}, 'synonym': True, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Menyanthes Nymphaeoides
Fetching: https://api.gbif.org/v1/species/suggest?q=Mespilus cotoneaster
Result: {'key': 3025577, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Rosales', 'family': 'Rosaceae', 'genus': 'Cotoneaster', 'species': 'Cotoneaster integerrimus', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 691, 'familyKey': 5015, 'genusKey': 3025563, 'speciesKey': 3025576, 'parent': 'Cotoneaster', 'parentKey': 3025563, 'nubKey': 3025577, 'scientificName': 'Mespilus cotoneaster L.', 'canonicalName': 'Mespilus cotoneaster', 'rank': 'SPECIES', 'status': 'SYNONYM', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '691': 'Rosales', '5015': 'Rosaceae', '3025563': 'Cotoneaster', '3025576': 'Cotoneaster integerrimus'}, 'synonym': True, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Milium lendigerum
Result: {'key': 4147857, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Poales', 'family': 'Poaceae', 'genus': 'Triplachne', 'species': 'Triplachne nitens', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 196, 'orderKey': 1369, 'familyKey': 3073, 'genusKey': 4116567, 'speciesKey': 4116566, 'parent': 'Triplachne', 'parentKey': 4116567, 'nubKey': 4147857, 'scientificName': 'Milium lendigerum Delile ex Boiss.', 'canonicalName': 'Milium lendigerum', 'rank': 'SPECIES', 'status': 'SYNONYM', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '196': 'Liliopsida', '1369': 'Poales', '3073': 'Poaceae', '4116567': 'Triplachne', '4116566': 'Triplachne nitens'}, 'synonym': True, 'class': 'Liliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Narcissus poeticus
Result: {'key': 7398674, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Asparagales', 'family': 'Amaryllidaceae', 'genus': 'Narcissus', 'species': 'Narcissus poeticus', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 196, 'orderKey': 1169, 'familyKey': 7682, 'genusKey': 2858200, 'speciesKey': 7398674, 'parent': 'Narcissus', 'parentKey': 2858200, 'scientificName': 'Narcissus poeticus Huds., 1762', 'canonicalName': 'Narcissus poeticus', 'rank': 'SPECIES', 'status': 'DOUBTFUL', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '196': 'Liliopsida', '1169': 'Asparagales', '7682': 'Amaryllidaceae', '2858200': 'Narcissus'}, 'synonym': False, 'class': 'Liliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Nemeolius Lucina
Fetching: https://api.gbif.org/v1/species/suggest?q=Neuropteris cordata
Fetching: https://api.gbif.org/v1/species/suggest?q=Oenanthe crocata
Result: {'key': 8067664, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Apiales', 'family': 'Apiaceae', 'genus': 'Oenanthe', 'species': 'Oenanthe banatica', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 1351, 'familyKey': 6720, 'genusKey': 3034893, 'speciesKey': 5540565, 'parent': 'Oenanthe', 'parentKey': 3034893, 'scientificName': 'Oenanthe crocata Kit.', 'canonicalName': 'Oenanthe crocata', 'rank': 'SPECIES', 'status': 'HETEROTYPIC_SYNONYM', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '1351': 'Apiales', '6720': 'Apiaceae', '3034893': 'Oenanthe', '5540565': 'Oenanthe banatica'}, 'synonym': True, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Ophrys arachnites
Result: {'key': 8239445, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Asparagales', 'family': 'Orchidaceae', 'genus': 'Ophrys', 'species': 'Ophrys arachnites', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 196, 'orderKey': 1169, 'familyKey': 7689, 'genusKey': 2792579, 'speciesKey': 8239445, 'parent': 'Ophrys', 'parentKey': 2792579, 'scientificName': 'Ophrys arachnites Lam., 1779', 'canonicalName': 'Ophrys arachnites', 'rank': 'SPECIES', 'status': 'ACCEPTED', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '196': 'Liliopsida', '1169': 'Asparagales', '7689': 'Orchidaceae', '2792579': 'Ophrys'}, 'synonym': False, 'class': 'Liliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Orchideae
Result: {'key': 3419958, 'kingdom': 'Fungi', 'phylum': 'Ascomycota', 'order': 'Ostropales', 'family': 'Gomphillaceae', 'genus': 'Setomyces', 'species': 'Setomyces orchideae', 'kingdomKey': 5, 'phylumKey': 95, 'classKey': 180, 'orderKey': 1279, 'familyKey': 2161, 'genusKey': 7249932, 'speciesKey': 3419958, 'parent': 'Setomyces', 'parentKey': 7249932, 'nubKey': 3419958, 'scientificName': 'Setomyces orchideae Bat. & I.H.Lima', 'canonicalName': 'Setomyces orchideae', 'rank': 'SPECIES', 'status': 'ACCEPTED', 'higherClassificationMap': {'5': 'Fungi', '95': 'Ascomycota', '180': 'Lecanoromycetes', '1279': 'Ostropales', '2161': 'Gomphillaceae', '7249932': 'Setomyces'}, 'synonym': False, 'class': 'Lecanoromycetes'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Orobanche caryophylacea
Fetching: https://api.gbif.org/v1/species/suggest?q=Panicum viride
Result: {'key': 4119443, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Poales', 'family': 'Poaceae', 'genus': 'Setaria', 'species': 'Setaria viridis', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 196, 'orderKey': 1369, 'familyKey': 3073, 'genusKey': 2702955, 'speciesKey': 5289684, 'parent': 'Setaria', 'parentKey': 2702955, 'nubKey': 4119443, 'scientificName': 'Panicum viride L.', 'canonicalName': 'Panicum viride', 'rank': 'SPECIES', 'status': 'HOMOTYPIC_SYNONYM', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '196': 'Liliopsida', '1369': 'Poales', '3073': 'Poaceae', '2702955': 'Setaria', '5289684': 'Setaria viridis'}, 'synonym': True, 'class': 'Liliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Peperomia
Result: {'key': 3086367, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Piperales', 'family': 'Piperaceae', 'genus': 'Peperomia', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 404, 'familyKey': 6678, 'genusKey': 3086367, 'parent': 'Piperaceae', 'parentKey': 6678, 'nubKey': 3086367, 'scientificName': 'Peperomia Ruiz & Pav.', 'canonicalName': 'Peperomia', 'rank': 'GENUS', 'status': 'ACCEPTED', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '404': 'Piperales', '6678': 'Piperaceae'}, 'synonym': False, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Phleum paniculatum
Result: {'key': 2706002, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Poales', 'family': 'Poaceae', 'genus': 'Phleum', 'species': 'Phleum paniculatum', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 196, 'orderKey': 1369, 'familyKey': 3073, 'genusKey': 2706001, 'speciesKey': 2706002, 'parent': 'Phleum', 'parentKey': 2706001, 'nubKey': 2706002, 'scientificName': 'Phleum paniculatum Huds.', 'canonicalName': 'Phleum paniculatum', 'rank': 'SPECIES', 'status': 'ACCEPTED', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '196': 'Liliopsida', '1369': 'Poales', '3073': 'Poaceae', '2706001': 'Phleum'}, 'synonym': False, 'class': 'Liliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Pisidium
Result: {'key': 2286678, 'kingdom': 'Animalia', 'phylum': 'Mollusca', 'order': 'Sphaeriida', 'family': 'Sphaeriidae', 'genus': 'Pisidium', 'kingdomKey': 1, 'phylumKey': 52, 'classKey': 137, 'orderKey': 10495862, 'familyKey': 3247675, 'genusKey': 2286678, 'parent': 'Sphaeriidae', 'parentKey': 3247675, 'nubKey': 2286678, 'scientificName': 'Pisidium C.Pfeiffer, 1821', 'canonicalName': 'Pisidium', 'rank': 'GENUS', 'status': 'ACCEPTED', 'higherClassificationMap': {'1': 'Animalia', '52': 'Mollusca', '137': 'Bivalvia', '10495862': 'Sphaeriida', '3247675': 'Sphaeriidae'}, 'synonym': False, 'class': 'Bivalvia'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Polyporites Bowmanni
Result: {'key': 10808197, 'kingdom': 'Fungi', 'genus': 'Polyporites', 'species': 'Polyporites bowmanni', 'kingdomKey': 5, 'genusKey': 7237625, 'speciesKey': 10808197, 'parent': 'Polyporites', 'parentKey': 7237625, 'scientificName': 'Polyporites bowmanni Lindl. & Hutton', 'canonicalName': 'Polyporites bowmanni', 'rank': 'SPECIES', 'status': 'ACCEPTED', 'higherClassificationMap': {'5': 'Fungi', '7237625': 'Polyporites'}, 'synonym': False}
Fetching: https://api.gbif.org/v1/species/suggest?q=Potamides plicatus
Fetching: https://api.gbif.org/v1/species/suggest?q=Potamogeton fluitans
Result: {'key': 8380039, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Alismatales', 'family': 'Potamogetonaceae', 'genus': 'Potamogeton', 'species': 'Potamogeton fluitans', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 196, 'orderKey': 551, 'familyKey': 6721, 'genusKey': 2756560, 'speciesKey': 8380039, 'parent': 'Potamogeton', 'parentKey': 2756560, 'scientificName': 'Potamogeton fluitans Sm.', 'canonicalName': 'Potamogeton fluitans', 'rank': 'SPECIES', 'status': 'DOUBTFUL', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '196': 'Liliopsida', '551': 'Alismatales', '6721': 'Potamogetonaceae', '2756560': 'Potamogeton'}, 'synonym': False, 'class': 'Liliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Potamogeton gramineum
Fetching: https://api.gbif.org/v1/species/suggest?q=Pothos
Result: {'key': 2868876, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Alismatales', 'family': 'Araceae', 'genus': 'Pothos', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 196, 'orderKey': 551, 'familyKey': 6979, 'genusKey': 2868876, 'parent': 'Araceae', 'parentKey': 6979, 'nubKey': 2868876, 'scientificName': 'Pothos L.', 'canonicalName': 'Pothos', 'rank': 'GENUS', 'status': 'ACCEPTED', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '196': 'Liliopsida', '551': 'Alismatales', '6979': 'Araceae'}, 'synonym': False, 'class': 'Liliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Primula
Result: {'key': 8026112, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Ericales', 'family': 'Primulaceae', 'genus': 'Primula', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 1353, 'familyKey': 6674, 'genusKey': 8026112, 'parent': 'Primulaceae', 'parentKey': 6674, 'scientificName': 'Primula L.', 'canonicalName': 'Primula', 'rank': 'GENUS', 'status': 'ACCEPTED', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '1353': 'Ericales', '6674': 'Primulaceae'}, 'synonym': False, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Primula scotica
Result: {'key': 5640571, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Ericales', 'family': 'Primulaceae', 'genus': 'Primula', 'species': 'Primula scotica', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 1353, 'familyKey': 6674, 'genusKey': 8026112, 'speciesKey': 5640571, 'parent': 'Primula', 'parentKey': 8026112, 'nubKey': 5640571, 'scientificName': 'Primula scotica Hook.', 'canonicalName': 'Primula scotica', 'rank': 'SPECIES', 'status': 'ACCEPTED', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '1353': 'Ericales', '6674': 'Primulaceae', '8026112': 'Primula'}, 'synonym': False, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Primula vulgaris
Result: {'key': 8144051, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Ericales', 'family': 'Primulaceae', 'genus': 'Primula', 'species': 'Primula vulgaris', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 1353, 'familyKey': 6674, 'genusKey': 8026112, 'speciesKey': 8144051, 'parent': 'Primula', 'parentKey': 8026112, 'scientificName': 'Primula vulgaris Hill', 'canonicalName': 'Primula vulgaris', 'rank': 'SPECIES', 'status': 'ACCEPTED', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '1353': 'Ericales', '6674': 'Primulaceae', '8026112': 'Primula'}, 'synonym': False, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Psammobia rudis
Fetching: https://api.gbif.org/v1/species/suggest?q=Pulicaria
Result: {'key': 9785145, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Asterales', 'family': 'Asteraceae', 'genus': 'Pulicaria', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 414, 'familyKey': 3065, 'genusKey': 9785145, 'parent': 'Asteraceae', 'parentKey': 3065, 'scientificName': 'Pulicaria Gaertn. ex Schreb.', 'canonicalName': 'Pulicaria', 'rank': 'GENUS', 'status': 'DOUBTFUL', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '414': 'Asterales', '3065': 'Asteraceae'}, 'synonym': False, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Pyrola
Result: {'key': 2888249, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Ericales', 'family': 'Ericaceae', 'genus': 'Pyrola', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 1353, 'familyKey': 2505, 'genusKey': 2888249, 'parent': 'Ericaceae', 'parentKey': 2505, 'nubKey': 2888249, 'scientificName': 'Pyrola L.', 'canonicalName': 'Pyrola', 'rank': 'GENUS', 'status': 'ACCEPTED', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '1353': 'Ericales', '2505': 'Ericaceae'}, 'synonym': False, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Pyrola minor
Result: {'key': 8616040, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Ericales', 'family': 'Ericaceae', 'genus': 'Pyrola', 'species': 'Pyrola rotundifolia', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 1353, 'familyKey': 2505, 'genusKey': 2888249, 'speciesKey': 2888269, 'parent': 'Pyrola rotundifolia', 'parentKey': 2888269, 'scientificName': 'Pyrola minor Gilib.', 'canonicalName': 'Pyrola minor', 'rank': 'SPECIES', 'status': 'HOMOTYPIC_SYNONYM', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '1353': 'Ericales', '2505': 'Ericaceae', '2888249': 'Pyrola', '2888269': 'Pyrola rotundifolia'}, 'synonym': True, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Pyrus pinnatifida
Result: {'key': 5365074, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Rosales', 'family': 'Rosaceae', 'genus': 'Hedlundia', 'species': 'Hedlundia thuringiaca', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 691, 'familyKey': 5015, 'genusKey': 9665832, 'speciesKey': 9471386, 'parent': 'Hedlundia', 'parentKey': 9665832, 'nubKey': 5365074, 'scientificName': 'Pyrus pinnatifida Sm.', 'canonicalName': 'Pyrus pinnatifida', 'rank': 'SPECIES', 'status': 'HETEROTYPIC_SYNONYM', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '691': 'Rosales', '5015': 'Rosaceae', '9665832': 'Hedlundia', '9471386': 'Hedlundia thuringiaca'}, 'synonym': True, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Pyrus torminalis
Result: {'key': 5365167, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Rosales', 'family': 'Rosaceae', 'genus': 'Torminalis', 'species': 'Torminalis glaberrima', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 691, 'familyKey': 5015, 'genusKey': 3026338, 'speciesKey': 9410160, 'parent': 'Torminalis', 'parentKey': 3026338, 'nubKey': 5365167, 'scientificName': 'Pyrus torminalis (L.) Ehrh.', 'canonicalName': 'Pyrus torminalis', 'rank': 'SPECIES', 'status': 'SYNONYM', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '691': 'Rosales', '5015': 'Rosaceae', '3026338': 'Torminalis', '9410160': 'Torminalis glaberrima'}, 'synonym': True, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Quercus sessiliflora
Result: {'key': 2880250, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Fagales', 'family': 'Fagaceae', 'genus': 'Quercus', 'species': 'Quercus petraea', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 1354, 'familyKey': 4689, 'genusKey': 2877951, 'speciesKey': 2880130, 'parent': 'Quercus petraea', 'parentKey': 2880130, 'nubKey': 2880250, 'scientificName': 'Quercus sessiliflora Salisb.', 'canonicalName': 'Quercus sessiliflora', 'rank': 'SPECIES', 'status': 'SYNONYM', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '1354': 'Fagales', '4689': 'Fagaceae', '2877951': 'Quercus', '2880130': 'Quercus petraea'}, 'synonym': True, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Ribes alpinum
Result: {'key': 7537846, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Saxifragales', 'family': 'Grossulariaceae', 'genus': 'Ribes', 'species': 'Ribes saxatile', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 7219248, 'familyKey': 2403, 'genusKey': 2986095, 'speciesKey': 4194725, 'parent': 'Ribes', 'parentKey': 2986095, 'scientificName': 'Ribes alpinum Siev.', 'canonicalName': 'Ribes alpinum', 'rank': 'SPECIES', 'status': 'SYNONYM', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '7219248': 'Saxifragales', '2403': 'Grossulariaceae', '2986095': 'Ribes', '4194725': 'Ribes saxatile'}, 'synonym': True, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Rubus idaeus
Result: {'key': 8309931, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Rosales', 'family': 'Rosaceae', 'genus': 'Rubus', 'species': 'Rubus parvifolius', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 691, 'familyKey': 5015, 'genusKey': 2988638, 'speciesKey': 2991373, 'parent': 'Rubus', 'parentKey': 2988638, 'scientificName': 'Rubus idaeus Blanco', 'canonicalName': 'Rubus idaeus', 'rank': 'SPECIES', 'status': 'HETEROTYPIC_SYNONYM', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '691': 'Rosales', '5015': 'Rosaceae', '2988638': 'Rubus', '2991373': 'Rubus parvifolius'}, 'synonym': True, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Ruppia
Result: {'key': 2863983, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Alismatales', 'family': 'Ruppiaceae', 'genus': 'Ruppia', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 196, 'orderKey': 551, 'familyKey': 3722, 'genusKey': 2863983, 'parent': 'Ruppiaceae', 'parentKey': 3722, 'nubKey': 2863983, 'scientificName': 'Ruppia L.', 'canonicalName': 'Ruppia', 'rank': 'GENUS', 'status': 'ACCEPTED', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '196': 'Liliopsida', '551': 'Alismatales', '3722': 'Ruppiaceae'}, 'synonym': False, 'class': 'Liliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Ruppia maritima
Result: {'key': 11055666, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Alismatales', 'family': 'Ruppiaceae', 'genus': 'Ruppia', 'species': 'Ruppia maritima', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 196, 'orderKey': 551, 'familyKey': 3722, 'genusKey': 2863983, 'speciesKey': 11055666, 'parent': 'Ruppia', 'parentKey': 2863983, 'scientificName': 'Ruppia maritima Thed., 1887', 'canonicalName': 'Ruppia maritima', 'rank': 'SPECIES', 'status': 'DOUBTFUL', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '196': 'Liliopsida', '551': 'Alismatales', '3722': 'Ruppiaceae', '2863983': 'Ruppia'}, 'synonym': False, 'class': 'Liliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Salicornia radicans
Result: {'key': 7860136, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Caryophyllales', 'family': 'Amaranthaceae', 'genus': 'Salicornia', 'species': 'Salicornia europaea', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 422, 'familyKey': 3064, 'genusKey': 3083796, 'speciesKey': 9823570, 'parent': 'Salicornia europaea', 'parentKey': 9823570, 'scientificName': 'Salicornia radicans Mert. & Koch', 'canonicalName': 'Salicornia radicans', 'rank': 'SPECIES', 'status': 'HETEROTYPIC_SYNONYM', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '422': 'Caryophyllales', '3064': 'Amaranthaceae', '3083796': 'Salicornia', '9823570': 'Salicornia europaea'}, 'synonym': True, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Salvia pratensis
Result: {'key': 7906852, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Lamiales', 'family': 'Lamiaceae', 'genus': 'Salvia', 'species': 'Salvia pratensis', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 408, 'familyKey': 2497, 'genusKey': 2926981, 'speciesKey': 7906852, 'parent': 'Salvia', 'parentKey': 2926981, 'scientificName': 'Salvia pratensis Hablitz', 'canonicalName': 'Salvia pratensis', 'rank': 'SPECIES', 'status': 'DOUBTFUL', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '408': 'Lamiales', '2497': 'Lamiaceae', '2926981': 'Salvia'}, 'synonym': False, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Santolina maritima
Result: {'key': 4252761, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Asterales', 'family': 'Asteraceae', 'genus': 'Otanthus', 'species': 'Otanthus maritimus', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 414, 'familyKey': 3065, 'genusKey': 3141533, 'speciesKey': 8278487, 'parent': 'Otanthus maritimus', 'parentKey': 8278487, 'nubKey': 4252761, 'scientificName': 'Santolina maritima (L.) Crantz', 'canonicalName': 'Santolina maritima', 'rank': 'SPECIES', 'status': 'HOMOTYPIC_SYNONYM', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '414': 'Asterales', '3065': 'Asteraceae', '3141533': 'Otanthus', '8278487': 'Otanthus maritimus'}, 'synonym': True, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Scirpus caricinus
Result: {'key': 2710663, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Poales', 'family': 'Cyperaceae', 'genus': 'Blysmus', 'species': 'Blysmus compressus', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 196, 'orderKey': 1369, 'familyKey': 7708, 'genusKey': 2710632, 'speciesKey': 2710650, 'parent': 'Blysmus compressus', 'parentKey': 2710650, 'nubKey': 2710663, 'scientificName': 'Scirpus caricinus Schrad.', 'canonicalName': 'Scirpus caricinus', 'rank': 'SPECIES', 'status': 'SYNONYM', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '196': 'Liliopsida', '1369': 'Poales', '7708': 'Cyperaceae', '2710632': 'Blysmus', '2710650': 'Blysmus compressus'}, 'synonym': True, 'class': 'Liliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Scirpus pauciflorus
Result: {'key': 8360722, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Poales', 'family': 'Cyperaceae', 'genus': 'Eleocharis', 'species': 'Eleocharis quinqueflora', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 196, 'orderKey': 1369, 'familyKey': 7708, 'genusKey': 2716791, 'speciesKey': 2717493, 'parent': 'Eleocharis', 'parentKey': 2716791, 'scientificName': 'Scirpus pauciflorus Lightf.', 'canonicalName': 'Scirpus pauciflorus', 'rank': 'SPECIES', 'status': 'SYNONYM', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '196': 'Liliopsida', '1369': 'Poales', '7708': 'Cyperaceae', '2716791': 'Eleocharis', '2717493': 'Eleocharis quinqueflora'}, 'synonym': True, 'class': 'Liliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Sisymbrium monense
Result: {'key': 8122961, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Brassicales', 'family': 'Brassicaceae', 'genus': 'Sisymbrium', 'species': 'Sisymbrium monense', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 7225535, 'familyKey': 3112, 'genusKey': 3046735, 'speciesKey': 8122961, 'parent': 'Sisymbrium', 'parentKey': 3046735, 'scientificName': 'Sisymbrium monense Vill., 1788', 'canonicalName': 'Sisymbrium monense', 'rank': 'SPECIES', 'status': 'DOUBTFUL', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '7225535': 'Brassicales', '3112': 'Brassicaceae', '3046735': 'Sisymbrium'}, 'synonym': False, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Sonchus palustris
Result: {'key': 3105650, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Asterales', 'family': 'Asteraceae', 'genus': 'Sonchus', 'species': 'Sonchus palustris', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 414, 'familyKey': 3065, 'genusKey': 3105646, 'speciesKey': 3105650, 'parent': 'Sonchus', 'parentKey': 3105646, 'nubKey': 3105650, 'scientificName': 'Sonchus palustris L.', 'canonicalName': 'Sonchus palustris', 'rank': 'SPECIES', 'status': 'ACCEPTED', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '414': 'Asterales', '3065': 'Asteraceae', '3105646': 'Sonchus'}, 'synonym': False, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Statice cordata
Result: {'key': 4089088, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Caryophyllales', 'family': 'Plumbaginaceae', 'genus': 'Limonium', 'species': 'Limonium cordatum', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 422, 'familyKey': 2419, 'genusKey': 3082293, 'speciesKey': 4088539, 'parent': 'Limonium', 'parentKey': 3082293, 'nubKey': 4089088, 'scientificName': 'Statice cordata L.', 'canonicalName': 'Statice cordata', 'rank': 'SPECIES', 'status': 'HETEROTYPIC_SYNONYM', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '422': 'Caryophyllales', '2419': 'Plumbaginaceae', '3082293': 'Limonium', '4088539': 'Limonium cordatum'}, 'synonym': True, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Tetrandria
Fetching: https://api.gbif.org/v1/species/suggest?q=Thalassophytes
Fetching: https://api.gbif.org/v1/species/suggest?q=Tormentilla reptans
Result: {'key': 3018316, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Rosales', 'family': 'Rosaceae', 'genus': 'Potentilla', 'species': 'Potentilla reptans', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 691, 'familyKey': 5015, 'genusKey': 8079058, 'speciesKey': 5367273, 'parent': 'Potentilla', 'parentKey': 8079058, 'nubKey': 3018316, 'scientificName': 'Tormentilla reptans L.', 'canonicalName': 'Tormentilla reptans', 'rank': 'SPECIES', 'status': 'SYNONYM', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '691': 'Rosales', '5015': 'Rosaceae', '8079058': 'Potentilla', '5367273': 'Potentilla reptans'}, 'synonym': True, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Trifolium
Result: {'key': 3268117, 'kingdom': 'Animalia', 'phylum': 'Platyhelminthes', 'genus': 'Trifolium', 'kingdomKey': 1, 'phylumKey': 108, 'classKey': 345, 'genusKey': 3268117, 'parent': 'Trematoda', 'parentKey': 345, 'nubKey': 3268117, 'scientificName': 'Trifolium Travassos, 1922', 'canonicalName': 'Trifolium', 'rank': 'GENUS', 'status': 'ACCEPTED', 'higherClassificationMap': {'1': 'Animalia', '108': 'Platyhelminthes', '345': 'Trematoda'}, 'synonym': False, 'class': 'Trematoda'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Trifolium subterraneum
Result: {'key': 5359330, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Fabales', 'family': 'Fabaceae', 'genus': 'Trifolium', 'species': 'Trifolium subterraneum', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 1370, 'familyKey': 5386, 'genusKey': 2973363, 'speciesKey': 5359330, 'parent': 'Trifolium', 'parentKey': 2973363, 'nubKey': 5359330, 'scientificName': 'Trifolium subterraneum L.', 'canonicalName': 'Trifolium subterraneum', 'rank': 'SPECIES', 'status': 'ACCEPTED', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '1370': 'Fabales', '5386': 'Fabaceae', '2973363': 'Trifolium'}, 'synonym': False, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Turritis hirsuta
Result: {'key': 5374873, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Brassicales', 'family': 'Brassicaceae', 'genus': 'Arabis', 'species': 'Arabis hirsuta', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 7225535, 'familyKey': 3112, 'genusKey': 5374837, 'speciesKey': 9202524, 'parent': 'Arabis', 'parentKey': 5374837, 'nubKey': 5374873, 'scientificName': 'Turritis hirsuta L.', 'canonicalName': 'Turritis hirsuta', 'rank': 'SPECIES', 'status': 'HOMOTYPIC_SYNONYM', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '7225535': 'Brassicales', '3112': 'Brassicaceae', '5374837': 'Arabis', '9202524': 'Arabis hirsuta'}, 'synonym': True, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Typha
Result: {'key': 2702102, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Poales', 'family': 'Typhaceae', 'genus': 'Typha', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 196, 'orderKey': 1369, 'familyKey': 4246, 'genusKey': 2702102, 'parent': 'Typhaceae', 'parentKey': 4246, 'nubKey': 2702102, 'scientificName': 'Typha L.', 'canonicalName': 'Typha', 'rank': 'GENUS', 'status': 'ACCEPTED', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '196': 'Liliopsida', '1369': 'Poales', '4246': 'Typhaceae'}, 'synonym': False, 'class': 'Liliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Ulmus suberosa
Result: {'key': 5680328, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Rosales', 'family': 'Ulmaceae', 'genus': 'Ulmus', 'species': 'Ulmus minor', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 691, 'familyKey': 2382, 'genusKey': 2984510, 'speciesKey': 5361865, 'parent': 'Ulmus minor', 'parentKey': 5361865, 'nubKey': 5680328, 'scientificName': 'Ulmus suberosa Moench', 'canonicalName': 'Ulmus suberosa', 'rank': 'SPECIES', 'status': 'SYNONYM', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '691': 'Rosales', '2382': 'Ulmaceae', '2984510': 'Ulmus', '5361865': 'Ulmus minor'}, 'synonym': True, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Vaccinium myrtillus
Result: {'key': 8165884, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Ericales', 'family': 'Ericaceae', 'genus': 'Vaccinium', 'species': 'Vaccinium ovalifolium', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 1353, 'familyKey': 2505, 'genusKey': 2882813, 'speciesKey': 2882894, 'parent': 'Vaccinium', 'parentKey': 2882813, 'scientificName': 'Vaccinium myrtillus Cham. & Schltdl.', 'canonicalName': 'Vaccinium myrtillus', 'rank': 'SPECIES', 'status': 'HETEROTYPIC_SYNONYM', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '1353': 'Ericales', '2505': 'Ericaceae', '2882813': 'Vaccinium', '2882894': 'Vaccinium ovalifolium'}, 'synonym': True, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Velleius
Result: {'key': 10972402, 'kingdom': 'Animalia', 'phylum': 'Arthropoda', 'order': 'Coleoptera', 'family': 'Staphylinidae', 'genus': 'Velleius', 'kingdomKey': 1, 'phylumKey': 54, 'classKey': 216, 'orderKey': 1470, 'familyKey': 7854, 'genusKey': 7605948, 'parent': 'Staphylinidae', 'parentKey': 7854, 'scientificName': 'Velleius Samouelle, 1819', 'canonicalName': 'Velleius', 'rank': 'GENUS', 'status': 'SYNONYM', 'higherClassificationMap': {'1': 'Animalia', '54': 'Arthropoda', '216': 'Insecta', '1470': 'Coleoptera', '7854': 'Staphylinidae', '7605948': 'Velleius'}, 'synonym': True, 'class': 'Insecta'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Vinca major
Result: {'key': 3169708, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Gentianales', 'family': 'Apocynaceae', 'genus': 'Vinca', 'species': 'Vinca major', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 412, 'familyKey': 6701, 'genusKey': 3169706, 'speciesKey': 3169708, 'parent': 'Vinca', 'parentKey': 3169706, 'nubKey': 3169708, 'scientificName': 'Vinca major L.', 'canonicalName': 'Vinca major', 'rank': 'SPECIES', 'status': 'ACCEPTED', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '412': 'Gentianales', '6701': 'Apocynaceae', '3169706': 'Vinca'}, 'synonym': False, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Viola palustris
Result: {'key': 5331355, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Malpighiales', 'family': 'Violaceae', 'genus': 'Viola', 'species': 'Viola palustris', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 1414, 'familyKey': 6631, 'genusKey': 2874237, 'speciesKey': 5331355, 'parent': 'Viola', 'parentKey': 2874237, 'nubKey': 5331355, 'scientificName': 'Viola palustris L.', 'canonicalName': 'Viola palustris', 'rank': 'SPECIES', 'status': 'ACCEPTED', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '1414': 'Malpighiales', '6631': 'Violaceae', '2874237': 'Viola'}, 'synonym': False, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Volucella
Result: {'key': 6006402, 'kingdom': 'Animalia', 'phylum': 'Chordata', 'order': 'Diprotodontia', 'family': 'Pseudocheiridae', 'genus': 'Petauroides', 'kingdomKey': 1, 'phylumKey': 44, 'classKey': 359, 'orderKey': 1452, 'familyKey': 9374, 'genusKey': 2440067, 'parent': 'Pseudocheiridae', 'parentKey': 9374, 'nubKey': 6006402, 'scientificName': 'Volucella Bechstein, 1800', 'canonicalName': 'Volucella', 'rank': 'GENUS', 'status': 'SYNONYM', 'higherClassificationMap': {'1': 'Animalia', '44': 'Chordata', '359': 'Mammalia', '1452': 'Diprotodontia', '9374': 'Pseudocheiridae', '2440067': 'Petauroides'}, 'synonym': True, 'class': 'Mammalia'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Wellingtonia
Result: {'key': 7268483, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Proteales', 'family': 'Sabiaceae', 'genus': 'Meliosma', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 220, 'orderKey': 400, 'familyKey': 2409, 'genusKey': 3033959, 'parent': 'Sabiaceae', 'parentKey': 2409, 'nubKey': 7268483, 'scientificName': 'Wellingtonia Meisn.', 'canonicalName': 'Wellingtonia', 'rank': 'GENUS', 'status': 'SYNONYM', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '220': 'Magnoliopsida', '400': 'Proteales', '2409': 'Sabiaceae', '3033959': 'Meliosma'}, 'synonym': True, 'class': 'Magnoliopsida'}
Fetching: https://api.gbif.org/v1/species/suggest?q=Zostera marina
Result: {'key': 2863967, 'kingdom': 'Plantae', 'phylum': 'Tracheophyta', 'order': 'Alismatales', 'family': 'Zosteraceae', 'genus': 'Zostera', 'species': 'Zostera marina', 'kingdomKey': 6, 'phylumKey': 7707728, 'classKey': 196, 'orderKey': 551, 'familyKey': 3725, 'genusKey': 2863960, 'speciesKey': 2863967, 'parent': 'Zostera', 'parentKey': 2863960, 'nubKey': 2863967, 'scientificName': 'Zostera marina L.', 'canonicalName': 'Zostera marina', 'rank': 'SPECIES', 'status': 'ACCEPTED', 'higherClassificationMap': {'6': 'Plantae', '7707728': 'Tracheophyta', '196': 'Liliopsida', '551': 'Alismatales', '3725': 'Zosteraceae', '2863960': 'Zostera'}, 'synonym': False, 'class': 'Liliopsida'}
CPU times: user 5.19 s, sys: 241 ms, total: 5.44 s
Wall time: 34.6 s
len(result)
117
Why do you think it took so long? How can you tell if no match was found?
We now have all sorts of exciting information about these species names. Try some of the entity names to see if the search got the correct match.
entity = 'Lobelia urens'
gbif = result[entity]
rank = gbif['rank']
status = gbif['status']
gbif_id = gbif['key']
print(f'Entity: {entity}, rank: {rank}, status: {status}, gbif_id: {gbif_id}.')
Entity: Lobelia urens, rank: SPECIES, status: ACCEPTED, gbif_id: 5408353.
A knowlege base is a system that stores facts and in some way links them with one another into a store of information that can be queried for new knowledge. A knowledge base may store semantic information with triples to create a knowledge graph where entities (nodes) are linked to other entities (nodes) by relationships (edges).
Formally, a triple is made up of subject, predicate and object. For example:
"Odysseus" (subject) -> "is married to" (predicate) -> "Penelope" (object)
Many triples together form a graph:

Each entity is represented by a URI, which is unique and identifies it unambigiously.
Perhaps the most well-known knowledge base is Wikidata, which is collaborative (relies on data donations and user editing) and open (all the data is openly licensed for re-use).
You can get an idea of the vast store of data and query possibilities by using the Wikidata Query Service.
EXERCISE: Try some of the 'Examples' queries from the Wikidata Query Service. Notice that some queries come with visualisations. Why do you think it takes so long for some of the queries to complete?
To interact with Wikidata's knowledge base programmatically, we must use a W3C-standard query language called SPARQL (SPARQL Protocol And RDF Query Language).
You can see the SPARQL queries in the Wikidata Query Service examples. They look like this:
#Map of hospitals
#added 2017-08
#defaultView:Map
SELECT * WHERE {
?item wdt:P31/wdt:P279* wd:Q16917;
wdt:P625 ?geo .
}
Unfortunately, SPARQL has a demanding learning curve, but fortunately there are a number of tools for programmers that can make our lives easier.
We are going to use a Python package called wptools to make querying Wikidata as easy as writing simple Python. wptools actually uses the MediaWiki API, which is cheating, or a good idea to avoid SPARQL, or both. 😆
First, let's try a simple string query:
import wptools
# Construct a query for the string "Lobelia urens"
page = wptools.page("Lobelia urens")
# Get the Wikidata and show it
page.get_wikidata()
page.data['wikibase']
www.wikidata.org (wikidata) Lobelia urens
www.wikidata.org (labels) P846|P5698|Q16521|Q55297054|P685|P3240|...
en.wikipedia.org (imageinfo) File:Lobelia urens (spike).jpg
Lobelia urens (en) data
{
aliases: <list(2)> lobelia, heath lobelia
claims: <dict(34)> P18, P225, P105, P646, P171, P1070, P961, P96...
description: species of plant
image: <list(1)> {'file': 'File:Lobelia urens (spike).jpg', 'kin...
label: Lobelia urens
labels: <dict(38)> P846, P5698, Q16521, Q55297054, P685, P3240, ...
modified: <dict(1)> wikidata
requests: <list(3)> wikidata, labels, imageinfo
title: Lobelia_urens
what: taxon
wikibase: Q3257667
wikidata: <dict(34)> image (P18), taxon name (P225), taxon rank ...
wikidata_pageid: 3108758
wikidata_url: https://www.wikidata.org/wiki/Q3257667
}
'Q3257667'
The ID that is printed out 'Q3257667' is the unique Wikidata ID, and the wikidata_url goes directly to the plant's unique URI.
EXERCISE: Try the Wikidata URL now and examine all the information that Wikidata knows about Lobelia urens. Notice in particular that it has a link to the GBIF ID '5408353'.
We can even get the plant's picture programmatically!
# Import some modules to help display images in Jupyter notebook code cells
from IPython.display import Image
# Get the picture URL from the Wikidata info
lobelia_pic_url = page.images()[0]['url']
# Display the image
Image(url=lobelia_pic_url, embed=True, width=400)
EXERCISE: Try searching Wikidata for some of the other taxonomic names and fetching their pictures. What happens if the search is unsuccessful?
Since Wikidata already has a link to the GBIF ID that we have from before, can we query Wikidata directly with the GBIF ID and get the knowledge base information that way?
The answer is yes! But we will have to make a small dive into the world of SPARQL...
Rather than use the Wikidata Query Service like a human, we're going to interact with the SPARQL endpoint programmatically. An endpoint is the URL where you send a query for a particular web service. For the curious, here is a big list of known SPARQL endpoints.
Wikidata is the top entry on that list! But the endpoint listed is a bit out of date. We are going to use the main Wikidata SPARQL endpoint at: https://query.wikidata.org/sparql
We're going to use a different Python library called SPARQLWrapper to make the query.
from SPARQLWrapper import SPARQLWrapper, XML, JSON
# Set the endpoint URL
# We are a bot/script! So we also need to send a descriptive user-agent otherwise we get blocked!
sparql = SPARQLWrapper("https://query.wikidata.org/sparql",
agent="Cambridge Digital Humanities Data School lab@cdh.cam.ac.uk")
# SPARQL query
sparql.setQuery("""
SELECT * WHERE {
?item wdt:P846 "5408353"
}
""")
# The endpoint returns results in XML but we want to convert to JSON because it's easier to work with
sparql.setReturnFormat(JSON)
result = sparql.query().convert()
result
{'head': {'vars': ['item']},
'results': {'bindings': [{'item': {'type': 'uri',
'value': 'http://www.wikidata.org/entity/Q3257667'}}]}}
If you now cut and paste the URL that has been returned you should find yourself looking once again at the Lobelia entity. So far so good.
Let's take a moment to understand a bit more about the SPARQL query we just made:
SELECT * means "select all" i.e. we want all the information availableWHERE {} is a clause to filter the results by whatever is between the curly braces {}?item wdt:P846 "5408353" is a triple:?item means "any items (subjects) that match"wdt:P846 is a property (predicate) and in this case the property P846 is GBIF ID"5408353" is the specific ID (object) we are looking for. We got this from querying the GBIF endpoint above.So, overall, the query says "select all information about any entity that has a GBIF ID property of 5408353".
You can read more about Wikidata Identifiers like "P846" and Wikidata prefixes like "wdt:".
Now let's try something a bit more sophisticated, by asking for some additional information available in Wikidata:
sparql.setQuery("""
SELECT ?item ?itemLabel ?itemDescription ?pic ?taxon ?rank WHERE {
?item wdt:P846 "5408353" ;
OPTIONAL{?item wdt:P18 ?pic .}
OPTIONAL{?item wdt:P225 ?taxon .}
OPTIONAL{?item wdt:P105 ?rank .}
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" }
}
""")
result = sparql.query().convert()
result
{'head': {'vars': ['item',
'itemLabel',
'itemDescription',
'pic',
'taxon',
'rank']},
'results': {'bindings': [{'item': {'type': 'uri',
'value': 'http://www.wikidata.org/entity/Q3257667'},
'pic': {'type': 'uri',
'value': 'http://commons.wikimedia.org/wiki/Special:FilePath/Lobelia%20urens%20%28spike%29.jpg'},
'taxon': {'type': 'literal', 'value': 'Lobelia urens'},
'rank': {'type': 'uri', 'value': 'http://www.wikidata.org/entity/Q7432'},
'itemLabel': {'xml:lang': 'en',
'type': 'literal',
'value': 'Lobelia urens'},
'itemDescription': {'xml:lang': 'en',
'type': 'literal',
'value': 'species of plant'}}]}}
If SPARQL takes your interest, and you'd like to learn more about linked open data, I can recommend the Programming Historian's Introduction to the Principles of Linked Open Data and Using SPARQL to access Linked Open Data.
Finally, let's use wptools again to get all the data we might ever want about this plant.
# Quickly parse out the Wikidata unique ID
url = result['results']['bindings'][0]['item']['value']
id = url.rpartition('/')[-1]
id
'Q3257667'
page2 = wptools.page(wikibase=id)
page2.get_wikidata()
page2.data['wikibase']
www.wikidata.org (wikidata) Q3257667
www.wikidata.org (labels) P846|P5698|Q16521|Q55297054|P685|P3240|...
en.wikipedia.org (imageinfo) File:Lobelia urens (spike).jpg
Lobelia urens (en) data
{
aliases: <list(2)> lobelia, heath lobelia
claims: <dict(34)> P18, P225, P105, P646, P171, P1070, P961, P96...
description: species of plant
image: <list(1)> {'file': 'File:Lobelia urens (spike).jpg', 'kin...
label: Lobelia urens
labels: <dict(38)> P846, P5698, Q16521, Q55297054, P685, P3240, ...
modified: <dict(1)> wikidata
requests: <list(3)> wikidata, labels, imageinfo
title: Lobelia_urens
what: taxon
wikibase: Q3257667
wikidata: <dict(34)> image (P18), taxon name (P225), taxon rank ...
wikidata_pageid: 3108758
wikidata_url: https://www.wikidata.org/wiki/Q3257667
}
'Q3257667'
The difference this time is that we looked up the Wikidata ID first, using the unique GBIF ID, so we know we will get the info from the correct entity.
Let's take a moment to consider the journey we have travelled.
We could do many things with extra information like this:
I'm sure you can think of more ideas!
To finish our exploration in code of this topic, I will show you a proof-of-concept for how we could add new TEI markup to an original Henslow Correspondence Project letter. I have had to make some simplifications in the example for the sake of brevity.
Heath lobelia close to Brigueuil, Charente, France
First, we will go back to the beginning of our journey and get the original letter where the binomial "Lobelia urens" appears. We can search the XML for the named entity and wrap it in a new XML tag to mark its position.
from bs4 import BeautifulSoup
taxon = "Lobelia urens"
# Get transcription from original TEI
with open("data/henslow/letters_14.xml", encoding="utf-8") as file:
xml = file.read()
# Find the species name and wrap it in a new XML tag
new_xml = xml.replace("Lobelia urens", "<name>Lobelia urens</name>")
# Create soup from the new XML including the new tag
letter = BeautifulSoup(new_xml, "lxml-xml")
transcription = letter.find(type='transcription')
transcription
<div type="transcription"> <p>I take the opportunity of M <hi rend="superscript">r</hi> Lork coming to Cambridge to reply to your letter of 21 <hi rend="superscript">st</hi> Oct <hi rend="superscript">br</hi>. and thank you for the very valuable present of plants every one were better than those of the same kind in my Herbarium and Narcissus poeticus, Glaucium violaceum and <name>Lobelia urens</name> new to me at least as British, for exotics I keep distinct from native species.— I wish your list of desiderata had reached me last spring, observing it to contain several plants indigenous in this part of the kingdom, but it will be useful during the course of next summer. However a few of those mentioned you will find in the packet and all such as are within my reach shall be procured when I meet with them— Those plants sent which are not enumerated in your catalogue will serve to exchange with other Botanists. I wish the specimens had been more numerous and rare—I feel much obliged for your interesting Syllabus of Mineralogy— your predecessor the late D <hi rend="superscript">r</hi> Clarke in a note in the last vol. of his valuable travels objects to the division that had acted upon the coal, at the Coley Hill basaltic dyke because the coke contains calcarious spar, to me it appears that this spar has been introduced into the interstices of the coke after it had become a cinder, by the process of infiltration. The different kinds of Elm will be common with you, have the goodness to preserve sp <hi rend="superscript">ns </hi>in flower and leaf— Also Anthemis Cotula which is scarce in the North, and Lathyrus hirsutus if native with you— Exotics Cryptogamic plants and in fact, any of your well dried specimens will be acceptable to me. Concluding that you are acquainted with the Rev <hi rend="superscript">d</hi> M <hi rend="superscript">r.</hi> Holmes and M <hi rend="superscript">r</hi> Sedgwick may I request you will have the goodness to remember me to them and in hopes of seeing you here next summer</p> <p>Believe me to be | My dear Sir | truly yours | Nat: Jn <hi rend="superscript">s</hi>: Winch</p> <p>P.S. I suppose you did not find Cucubalus baccifer in Anglesea?</p> </div>
Can you see where we have added the new tag wrapping the named entity?
Now we want to modify this markup with the linked data we collected earlier, as follows:
<name type="taxon" ref="https://www.gbif.org/species/5408353 https://www.wikidata.org/wiki/Q3257667">Lobelia urens</name>
(Thanks to Huw Jones for supplying the correct TEI form to follow.)
We can create the new markup using BeautifulSoup:
# Data from the previous lookup steps
gbif_url = "https://www.gbif.org/species/5408353"
wikidata_url = "https://www.wikidata.org/entity/Q3257667"
# Create the new tag and contents
taxon_tag = letter.new_tag("name", type="taxon", ref=f'{gbif_url} {wikidata_url}')
taxon_tag.string = taxon
taxon_tag
<name ref="https://www.gbif.org/species/5408353 https://www.wikidata.org/entity/Q3257667" type="taxon">Lobelia urens</name>
And then place it into the XML:
# Find the taxonomic name in the transcription and replace it with the new tag
transcription_tag = letter.find(type='transcription')
transcription_tag.find("name").replace_with(taxon_tag)
# Print out the first paragraph of the transcription to check the new tag
print(transcription_tag.p.prettify())
<p> I take the opportunity of M <hi rend="superscript"> r </hi> Lork coming to Cambridge to reply to your letter of 21 <hi rend="superscript"> st </hi> Oct <hi rend="superscript"> br </hi> . and thank you for the very valuable present of plants every one were better than those of the same kind in my Herbarium and Narcissus poeticus, Glaucium violaceum and <name ref="https://www.gbif.org/species/5408353 https://www.wikidata.org/entity/Q3257667" type="taxon"> Lobelia urens </name> new to me at least as British, for exotics I keep distinct from native species.— I wish your list of desiderata had reached me last spring, observing it to contain several plants indigenous in this part of the kingdom, but it will be useful during the course of next summer. However a few of those mentioned you will find in the packet and all such as are within my reach shall be procured when I meet with them— Those plants sent which are not enumerated in your catalogue will serve to exchange with other Botanists. I wish the specimens had been more numerous and rare—I feel much obliged for your interesting Syllabus of Mineralogy— your predecessor the late D <hi rend="superscript"> r </hi> Clarke in a note in the last vol. of his valuable travels objects to the division that had acted upon the coal, at the Coley Hill basaltic dyke because the coke contains calcarious spar, to me it appears that this spar has been introduced into the interstices of the coke after it had become a cinder, by the process of infiltration. The different kinds of Elm will be common with you, have the goodness to preserve sp <hi rend="superscript"> ns </hi> in flower and leaf— Also Anthemis Cotula which is scarce in the North, and Lathyrus hirsutus if native with you— Exotics Cryptogamic plants and in fact, any of your well dried specimens will be acceptable to me. Concluding that you are acquainted with the Rev <hi rend="superscript"> d </hi> M <hi rend="superscript"> r. </hi> Holmes and M <hi rend="superscript"> r </hi> Sedgwick may I request you will have the goodness to remember me to them and in hopes of seeing you here next summer </p>
Finally, we can save the new TEI document to file:
from pathlib import Path
output_file = Path('output/letters_14-taxon.xml')
letter_xml = letter.prettify()
output_file.open('w', encoding='utf-8').write(letter_xml)
5723
EXERCISE: Review the modified TEI file output/letters_14-taxon.xml and inspect the newly added markup. You may need to download it and open it in Oxygen or another editor to see the markup.
Of course Linked Open Data works both ways: once you have gone to the trouble of linking everything to its Wikidata ID, you may wish to add your data to Wikidata, but that is a big topic for another day.
One final question may have occurred to you during the process of working through this notebook.
If linking is done automatically, potentially without human intervention, how can we be sure the results are accurate?
It's likely in a real-world project you would need some form of human quality control, but an additional approach is to use machine learning to predict links.
There are potentially two ways of doing this:
spaCy has the capability to link named entities to identifiers stored in a knowledge base. For anyone with a lot of computing power and time to hand, there's even some example code to do this with Wikipedia and Wikidata data dumps.

The queue for computing time on the Cambridge EDSAC, 1960. To use High Performance Computing today, nothing has really changed, except the queue itself is now managed by software!
You can check spaCy Universe for resources developed with or for spaCy. One example of an entity linker:

Covered in this notebook:
Congratulations! 🎉
That's the end of this series of notebooks about named entity recognition. I hope you enjoyed your time working through them.